【问题标题】:HttpAddRequestHeadersW with unicode string header带有 unicode 字符串标头的 HttpAddRequestHeaders
【发布时间】:2016-09-30 03:30:09
【问题描述】:

如果我使用 HttpAddRequestHeadersW 版本并附加 unicode 宽字符串,服务器是否识别字符集?哪一方负责字符集编码转换?服务器还是客户端?

【问题讨论】:

    标签: c++ wininet


    【解决方案1】:

    Windows 将首先将宽 Unicode 字符串转换为 iso-8859-1 编码。但是,几乎所有非 ASCII 字符都是不允许的,因此您必须对 UTF8 字符串进行 base64 编码,然后在客户端和服务器上进行自定义处理以使用它。

    有关详细信息,请参阅此问题: How to send non-English unicode string using HTTP header?

    【讨论】:

    • Base64 不是唯一的选择,URL 转义也可以工作(%E5 等)。双方都需要自定义处理,这意味着您可以使用任何可打印的 ASCII 编码
    • 但问题不只是编码。您还需要拆分长线并再次将它们合并在一起。虽然这显然可以通过任何编码手动完成,但它是 Base64 编码/解码引擎中的标准功能,因此您很可能能够使用现有的稳定库来处理标头。
    猜你喜欢
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多