解析以UTF-8编码的XML

时间:2009-08-02 04:15:00

标签: c++ xml utf-8 libxml2

我正在使用以UTF-8编码的Wikipedia XML转储。现在,我正在读取所有内容作为std :: string,所以当我std :: cout到屏幕时,外来字符显示为乱码。

实际的解析过程只查找ASCII字符,但是当我将解析后的文件写入磁盘时,我想保留外来字符。换句话说,我希望输出具有与输入相同的编码。

使用std :: string是否可以,或者我将不得不使用像ICU这样的东西?我看过的图书馆看起来过于复杂。我可以用它来快速做到这一点吗?

2 个答案:

答案 0 :(得分:1)

您没有打破文本和非ascii字符是您的安全。您可以使用 std :: string没有问题。

我的意思是当你没有将XML的内容与试图做分裂字母或单词等事情相关联时,尝试制作大写文本等,你没有任何问题。

答案 1 :(得分:1)

UTF-8是XML文档的默认编码。只需将其写入您的文件即可。将它转换为Unicode并再次返回是没有意义的。如果意外地将其倾倒在屏幕上,请避开你的目光: - )

删除像'{'这样的ASCII字符不会导致问题。 UTF-8的设计使得多字节字符中的字节不在0-127范围内,因此不能与ASCII字符混淆。