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

时间:2012-09-01 12:39:46

标签: c# .net ios unicode user-agent

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

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

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

  

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

如何更改UA编码?

1 个答案:

答案 0 :(得分: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。

但是,您可以应用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八位字节序列。