5

今日、HttpWebRequest を使用してリクエストを投稿しようとしたときに、UserAgent のエンコーディングに問題がありました。

通常、UserAgent はラテン文字と句読点で構成されます。ただし、UA に Unicode (特に中国語) 文字が含まれている iOS アプリの Web 要求をシミュレートする必要があります。

Fiddler を使用して生のリクエストを取得すると、アプリの UA で使用されている Unicode エンコーディングが使用されていることがわかりました。C# で POST できませんでした。このエラーが発生しました:

UserAgent で Unicode を送信しようとすることはできません。しかし、それは私のプロジェクトにとって本当に重要です。これで、UA のバイトなしで App のリクエストをシミュレートできます。

UA エンコーディングを変更するにはどうすればよいですか?

4

1 に答える 1

2

標準 ( rfc 2616 (http/1.1), sec 2.2, 3.8. 14.43およびrfc 2047 (mime, part 3), sec 4, 5 ) によると、 iso-8859-1 以外のエンコードは使用できません。 user-agent などの任意の http ヘッダー フィールド。

ただし、rfc 2047 のエンコード方式を適用して、Unicode 文字列を 8859-1 文字列にマップできます。簡単に言えば、テキストを文字セット識別子でラップし、Unicode コードポイントをそれぞれのエンコーディングのオクテット シーケンスの 16 進値で置き換えます。

例:

User-Agent: Million-€-BrowserとなりUser-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?=e2 82 acユーロ記号のutf-8オクテット列です。

于 2013-03-21T09:36:18.610 に答える