【发布时间】:2011-07-15 02:35:10
【问题描述】:
我可以将 libxml2 与 unicode 一起使用吗?我想读写用unicode编写的xml文件,是否可以将libxml2与c++一起使用?
【问题讨论】:
-
你想知道 libxml2 是否可以处理 wchar_t* 吗?或者您想知道它是否支持非 ASCII 7 位的编码?
我可以将 libxml2 与 unicode 一起使用吗?我想读写用unicode编写的xml文件,是否可以将libxml2与c++一起使用?
【问题讨论】:
libxml2 在内部使用 utf8 编码来存储值,并将使用 iconv 将输入从指定的编码(在 xml 编码声明中)转换为 utf8。所以是的,libxml2 在某种意义上可以与 unicode 一起使用。
但如果您真正的问题是:libxml2 是否接受 wchar_t* 作为输入,那么答案是否定的。您必须将其转换为 8 位编码(utf8 可能是更安全的选择,因为它可以编码每个 unicode 代码点)。
【讨论】:
<?xml version="1.0" encoding="iso-8859-1"?> 标签)。解析文档时,libxml2 会将文档转换为 utf-8,如果它在处理之前尚未处于此编码中,并将为您提供 utf-8 内容。
wchar_t 是在C 标准中定义的类型(并由C++ 继承),可以表示一些宽字符。这些宽字符的编码和实现取决于实现,但它们在 Windows 上经常使用(宏 TCHAR 在所谓的“unicode”模式下编译时扩展为 wchar_t)。我建议你不要使用它们。我问是因为很多 Windows 程序员都假设“unicode == wchar_t”(这是不正确的)。所以为了你的使用,我会说libxml2确实支持unicode。
将此处理指令用于 UTF-8 内容*:
<?xml version="1.0" encoding="UTF-8"?>
*这是我假设你所说的“unicode”的意思,因为Unicode is not UTF-8。
【讨论】: