c++ - 使用 Xerces 2.6 序列化汉字

标签 c++ character-encoding xerces

我有一个编码为 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/

相关文章:

java - SAX解析异常 : 'Attribute ""bound to namespace "null" was already specified for element "metric"'

android - C++ 中对构造函数的 undefined reference

mysql - 我如何找出mysql中的默认服务器字符集?

python - 为什么 Matplotlib 的 PdfPages 将选项卡打印为框(字体编码)?

php - 以 jQuery Ajax 表单提交的错误字符集

xml - 未找到元素声明

c# - 跨语言共享常量

C++ boost 图 : How to customize callback function vf2_print_callback in vf2_subgrap_iso. hpp

c++ - LLVM,获取内部结构的偏移量

c++ - SAX2 (Xerces-C) : How to get the line number of parsed tags?