编码UTF-8到Ascii(8位)转换的百分比

时间:2009-11-22 19:23:58

标签: url utf-8 ascii url-encoding

我正在读取网址,他们通常会使用百分比编码字符。

示例:%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 ++。

1 个答案:

答案 0 :(得分:1)

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

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

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