7

次のURLをWebブラウザーに入力して、Enterキーを押します。

http://localhost/website.aspx?paymentID=6++7d6CZRKY%3D&language=English

HttpContext.Current.Request.QueryString ["paymentID"]を実行すると、コード内で

67d6CZRKY=を取得します

しかし、HttpContext.Current.Request.QueryString.ToString()を実行すると、次のように表示されます。

PaymentID = 6 ++ 7d6CZRKY%3D&language=英語

ユーザーがWebブラウザのURLに入力した実際の支払いIDを抽出したいもの。URLがエンコードされているかどうかは気になりません。ここで%3Dと+記号が同時に起こっているのは奇妙なことだと私は知っているからです!しかし、実際の+記号は必要です。HttpContext.Current.Request.QueryString ["paymentID"]を実行すると、どういうわけかスペースにデコードされます。

ユーザーが入力した実際の支払いIDを抽出したいだけです。それを行うための最良の方法は何ですか?

ありがとうございました。

4

3 に答える 3

8

最初に、URLEncode()を使用してURLをエンコードする必要があります。+のURLはスペースに等しいため、%2bにエンコードする必要があります。

string paymentId = Server.UrlEncode("6++7d6CZRKY=");
// paymentId = 6%2b%2b7d6CZRKY%3d

そして今

string result = Request.QueryString["paymentId"].ToString();
//result = 6++7d6CZRKY=

でも

string paymentId = Server.UrlEncode("6  7d6CZRKY=");
//paymentId looks like you want it, but the + is a space -- 6++7d6CZRKY%3d

string result = Request.QueryString["paymentId"].ToString();
//result = 6 7d6CZRKY=
于 2012-11-18T23:40:16.593 に答える
2

これに関するいくつかの情報がここにあります:プラスサインインクエリ文字列

ただし、正規表現を使用して、クエリ文字列からパラメータを取得することもできると思います。このようなもの:

string queryString = HttpContext.Current.Request.QueryString.ToString();
string paramPaymentID = Regex.Match(queryString, "paymentID=([^&]+)").Groups[1].Value;
于 2012-11-18T22:41:15.077 に答える
1

クエリ文字列でアラビア語のテキストを送信しました

クエリ文字列のアラビア語テキスト

この文字列を再取得すると、エンコードされました ここに画像の説明を入力してください

Server.UrlDecode

 departmentName = Server.UrlDecode(departmentName);

再びアラビア語に戻ります ここに画像の説明を入力してください

これがお役に立てば幸いです

于 2016-08-31T12:22:07.677 に答える