0

我正在使用 libcurl 来获取一些 HTML 页面。

HTML 页面包含一些字符引用,例如:סלקום

当我使用 libxml2 阅读此内容时,我得到: ׳₪׳¨׳~׳ ׳¨

是 ISO-8859-1 编码吗?

如果是这样,我如何将其转换为 UTF-8 以获得正确的单词。

谢谢

编辑:我得到了解决方案,MSalters 是对的,libxml2 确实使用 UTF-8。

我将此添加到 eclipse.ini

-Dfile.encoding=utf-8

最后我在我的 Eclipse 控制台上得到了希伯来语字符。谢谢

4

3 回答 3

3

你看过i18n 上的 libxml2 页面吗?它解释了 libxml2 如何解决这些问题。

ס从 libxml2 中得到一个。但是,您说您得到类似׳₪׳¨׳˜׳ ׳¨. 你为什么认为你得到了那个?你得到一个XMLchar*. 你是如何将该指针转换为上面的字符串的?您是否使用了调试器?该调试器是否知道如何呈现XMLchar*? 我敢打赌这XMLchar*是正确的,但是您使用的调试器无法在XMLchar*

要回答您的最后一个问题, aXMLchar*已经是 UTF-8,不需要进一步转换。

于 2010-10-20T09:59:31.150 回答
0

不。这些实体对应于字符的 Unicode 序列号的十进制值。例如,请参阅此页面

因此,您可以将 Unicode 值存储为integers 并使用算法将这些整数转换为 UTF-8 多字节字符。请参阅 UTF-8 规范。

于 2010-10-20T07:51:35.540 回答
0

这个答案是在假设编码文本作为 UTF-16 返回的情况下给出的,事实证明并非如此。


我猜编码是 UTF-16 或 UCS2。将此指定为 iconv 的输入。可能还有字节序问题,看看这里


c风格的方式是(不检查清晰度):

iconv_t ic = iconv_open("UCS-2", "UTF-8");
iconv(ic, myUCS2_Text, inputSize, myUTF8-Text, outputSize);
iconv_close(ic);
于 2010-10-20T08:33:30.453 回答