【问题标题】:Percent Encoded UTF-8 to Ascii(8-bit) conversion百分比编码的 UTF-8 到 Ascii(8 位)的转换
【发布时间】:2009-11-22 19:23:58
【问题描述】:

我正在阅读 url,它们通常有百分比编码的字符。

示例:%C3%A9 实际上是 é

根据http://www.microsystools.com/products/sitemap-generator/faq/character-percentage-url-encoding/ ,8位ASCII(128-255)的上半部分的字符被编码为UTF-8,然后它们的字节被保存为十六进制。现在,当我得到我的 URL 时,%HEX 已被重新编码为 8 位 ascii,我需要将它们转换回它们真正的 8 位 ascii。有没有我可以使用的函数/库,或者,我将如何进行转换?

我正在使用 C/C++。

【问题讨论】:

  • 这是今天第二次有人谈论 8 位 ascii .. 那是什么? ASCII 使用 7 位。 Latin1(以及一大堆其他字符集)使用 8 位,并且通常是 ASCII 的超集,但出于这个原因,我不会称它们为“8 位 ASCII”,所以......你所说的“8-”是什么意思位 ASCII"?
  • 常规字符。 ascii-code.com

标签: url utf-8 ascii url-encoding


【解决方案1】:

首先你需要 URLDecode。不是跨平台 C++ 中可用的函数,但幸运的是,这不是一个难题。将字节从源复制到目标。非 % 字节只是被复制。当你点击 %xx 时,将 XX 从十六进制字符转换为二进制,你就有了你的字节。

这为您提供了一个 UTF-8 文本缓冲区。你说你想要'ASCII'——ISO-646。那么你不能有重音e。对于您真正想要的,我可以想到几种可能性:

  1. ISO-8859-1。您可以使用 ICU 将 UTF-8 转换为 ISO-8859-1。
  2. ISO-646。您也可以使用 ICU,我相信它会将重音字符转换为 ISO-646 等效项。

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 2011-06-26
    • 2012-08-04
    • 2013-04-19
    • 2021-07-11
    • 2011-08-22
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多