我有一个编码为 UTF-8 的 Xerces (2.6) DOMNode 对象。我曾经像这样阅读它的 TEXT 元素:
CBuffer DomNodeExtended::getText( const DOMNode* node ) const {
char* p = XMLString::transcode( node->getNodeValue( ) );
CBuffer xNodeText( p );
delete p;
return xNodeText;
}
CBuffer 只是一个缓冲区对象,它最近像在数据库中一样持久化。
这一直有效,直到在 TEXT 中只有常见的 ASCII 字符。如果我们有中文,他们会在 transcode
操作中迷路。
我在谷歌上搜索了很多以寻求解决方案。看起来对于 Xerces 3,DOMWriter 类应该可以解决问题。对于 Xerces 2.6,我正在尝试使用 XMLTranscoder,但还没有成功。有人可以帮忙吗?
编辑 看来我错了,DOMWriter 类在 Xerces 2.6 中已经可用。我现在正在尝试基于它的解决方案。
最佳答案
不要使用转码方法。文档明确指出它将文本转换为“ native 代码页”——这几乎总是有损操作。
关于c++ - 使用 Xerces 2.6 序列化汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996070/