1

ポンド記号の文字、つまりISO-8859-1としてエンコードされた「£」を有線で送信したいと思います。私はこれを次のように実行します。

var _encoding = Encoding.GetEncoding("iso-8859-1");
var _requestContent = _encoding.GetBytes(requestContent);
var _request = (HttpWebRequest)WebRequest.Create(target);

_request.Headers[HttpRequestHeader.ContentEncoding] = _encoding.WebName;
_request.Method = "POST";
_request.ContentType = "application/x-www-form-urlencoded; charset=iso-8859-1";
_request.ContentLength = _requestContent.Length;

_requestStream = _request.GetRequestStream();
_requestStream.Write(_requestContent, 0, _requestContent.Length);
_requestStream.Flush();
_requestStream.Close();

ターゲットにブレークポイントを設定すると、次のようになります:'%a3'ですが、代わりに'%u00a3'を受け取ります。多くの奇妙な文字をテストしましたが、問題があるのは「£」だけのようです。

誰かがここで何が問題なのか知っていますか?-助けていただければ幸いです...

ビリー

4

2 に答える 2

1

私が見ることができることから、それらは同等です。サーバーがチョークした場合、サーバーはおそらくエスケープされたUnicodeをサポートしていません。

于 2010-03-30T09:00:47.997 に答える
0

ちょっとした調査から Ì が見つかりました:

ISO-8859-1 は 2 つの文字グループに分けられます: (参照: http://en.wikipedia.org/wiki/ISO_8859-1 )

下位の範囲 20 から 7E - すべての文字が正しくエンコードされているように見える上位の範囲 A0 から FF - すべての文字が同等の Unicode 値にエンコードされているように見える範囲

'£' は A0 から FF の高い範囲にあるため、%u00a3 にエンコードされます。実際、A0 から FF までの上位範囲の最初の数文字、つまり「¡¢£¤¥¦§¨©ª«¬®」を使用すると、「%u00a1%u00a2%u00a3%u00a4%u00a5%u00a6%u00a7」が得られます。 %u00a8%u00a9%u00aa%u00ab%u00ac%u00ae'. この動作は一貫しています。

私が今持っている質問は、A0 から FF までのより高い範囲の文字が、同等の ISO-8859-1 値ではなく、Unicode 値にエンコードされるのはなぜですか?

%u00a1%u00a2%u00a3%u00a4%u00a5%u00a6%u00a7%u00a8%u00a9%u00aa%u00ab%u00ac+%u00ae

于 2010-03-30T11:35:40.733 に答える