今天,当我尝试使用HttpWebRequest发布请求时,我遇到了UserAgent编码的问题。
通常,UserAgent由拉丁字母和标点符号组成。但是,我需要模拟iOS应用程序的Web请求,其UA包含一些Unicode(特别是中文)字符。
使用Fiddler获取原始请求,我发现该应用程序在其UA中使用了使用的Unicode编码。我无法在C#中发布它;我收到了这个错误:
您可能不会尝试在UserAgent中发送Unicode。但这对我的项目非常重要。现在我可以在没有UA字节的情况下模拟App的请求。
如何更改UA编码?
答案 0 :(得分:2)
根据标准(rfc 2616 (http/1.1), sec 2.2, 3.8. 14.43和rfc 2047 (mime, part 3), sec 4, 5),您不能使用任何其他编码,而是iso-8859-1用于任何http头字段,例如user-agent。
但是,您可以应用rfc 2047的编码方案将unicode字符串映射到8859-1 - 字符串;简而言之,您使用charset标识符包装文本,并将ocict序列的十六进制值替换为unicode代码点。
示例:
User-Agent: Million-€-Browser
变为User-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?=
,其中e2 82 ac
是欧元符号的utf-8八位字节序列。