【发布时间】:2013-10-01 15:20:32
【问题描述】:
我的问题与这个未回答的问题相同?
How to read Unicode XML values with rapidxml
但是我的 XML 内容是用 UTF-8 编码的。我是 MS Visual Studio、C++ 的新手。
我的问题是,我们如何将 UTF-8 字符串读入 wchar_t 类型的字符串?
说,我定义一个这样的结构,
typedef struct{
vector<int> stroke_labels;
int stroke_count;
wchar_t* uni_val;
}WORD_DETAIL;
当我从 xml 读取值时,我使用..
WORD_DETAIL this_detail;
this_detail.uni_val=curr_word->first_node("labelDesc")->first_node("annotationDetails")->first_node("codeSequence")->value();
但存储的 utf-8 字符串与预期不符。它们是损坏的字符。
我的问题是:
- 如何使用 rapidxml 读取 Unicode/Utf-8 值?
- 是否有更简单的 xml 解析器可以做同样的事情?
- 任何示例代码都将不胜感激。
在第 2.1 节here 中提到了
“请注意,RapidXml 不执行解码 - name() 和 value() 函数返回的字符串将包含使用与源文件相同的编码进行编码的文本。”
如果我的 XML 的编码是 UTF-8 ,那么获取 ->value() 函数返回值的最佳方法是什么?
提前致谢。
【问题讨论】:
-
您是否阅读过文档的第 1.2 节 rapidxml.sourceforge.net/…?似乎如果你想做 UTF-8 到 UTF-16 的转换,你必须自己做。但这并不难。
-
john : 请检查我的编辑
-
由于您使用的是 Windows,我想将 UTF-8 转换为 UTF-16 的最简单方法是使用 Windows 函数 MultiByteToWideChar。你可以在互联网上找到很多这样的例子。
标签: c++ visual-studio-2010 rapidxml