5

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

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

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

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

如何更改 UA 编码?

4

1 回答 1

2

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

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

例子:

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 回答