繁体   English   中英

如何在C ++中使用libiconv将ISO-8859-1转换为UTF-8

[英]How to convert ISO-8859-1 to UTF-8 using libiconv in C++

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

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

当我使用libxml2阅读此内容时,我得到:

是ISO-8859-1编码吗?

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

谢谢

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

我将此添加到eclipse.ini

-Dfile.encoding = utf-8

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

您是否在i18n上看到过libxml2页面 它说明了libxml2如何解决这些问题。

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

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

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

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

这个答案是在假设编码的文本以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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM