【问题标题】:How to change encoding of UserAgent in HttpWebRequest?如何更改 HttpWebRequest 中 UserAgent 的编码?
【发布时间】:2012-09-01 12:39:46
【问题描述】:

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

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

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

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

如何更改 UA 编码?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2015-11-15
      相关资源
      最近更新 更多