如何在HttpWebRequest中更改UserAgent的编码?

Pat*_* Wu 5 .net c# unicode user-agent ios

今天,当我尝试使用HttpWebRequest发布请求时,我遇到了UserAgent编码的问题.

通常,UserAgent由拉丁字母和标点符号组成.但是,我需要模拟iOS应用程序的Web请求,其UA包含一些Unicode(特别是中文)字符.

使用Fiddler获取原始请求,我发现该应用程序在其UA中使用了使用的Unicode编码.我无法在C#中发布它; 我收到了这个错误:

您可能不会尝试在UserAgent中发送Unicode.但这对我的项目非常重要.现在我可以在没有UA字节的情况下模拟App的请求.

如何更改UA编码?

col*_*sar 2

根据标准(rfc 2616 (http/1.1), sec 2.2, 3.8.14.43rfc 2047 (mime,part 3), sec 4, 5),您不能使用除 iso-8859-1 之外的任何其他编码对于任何 http 标头字段,例如 user-agent。

\n\n

但是,您可以应用 rfc 2047 的编码方案将 unicode 字符串映射到 8859-1 - 字符串;简而言之,您使用字符集标识符包装文本,并用各自编码中的八位位组序列的十六进制值替换 unicode 代码点。

\n\n

例子:

\n\n

User-Agent: Million-\xe2\x82\xac-Browser变为User-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?=,其中e2 82 ac是欧元符号的 utf-8 八位字节序列。

\n