首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

rapid读取utf-8 格式xml乱码有关问题,

2013-11-09 
rapid读取utf-8 格式xml乱码问题,在线等~RT,最近项目想把XML解析工具换掉,换成支持unicode的更有效率的rap

rapid读取utf-8 格式xml乱码问题,在线等~
    RT,最近项目想把XML解析工具换掉,换成支持unicode的更有效率的rapidxml,但是就出现了问题,就是读取utf-8等unicode格式xml加载的中文总是乱码,官方手册也没说到这个,百度谷歌了很久也没找到答案,因为暂时还不想把格式转换成ansi,所以想咨询下各位,有过类似问题的是怎么处理的?求解惑,在线等。 utf-8 unicode xml 乱码
[解决办法]
你怎么判断是乱码的?
别让操作系统和一些工具迷惑了。
[解决办法]
你可以用16进制打开看一下你保存的文本,看看哪里出问题了,另外utf8和unicode是两种编码方式,unicode保存的时候你还要注意处理器的大小端问题
[解决办法]

引用:
我这样判断的,用记事本保存为ansi的时候,wcout << file.data()时,显示的是中文,而另存为utf-8的时候,则是乱码,具体代码如下:

file<wchar_t> fdoc("Config.xml");
#ifdef UNICODE
std::wcout << fdoc.data() << endl;
#else 
std::cout<<fdoc.data()<<std::endl; 
#endif


UTF-8和Unicode是两种不同的编码。
wchar_t不能区别这两种编码。
需要自己转换。

另外,rapidxml貌似提供了不同编码的枚举,找找源码里面的解析
[解决办法]
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A

推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
[解决办法]
可能不是乱码的哦!
[解决办法]
试试pugixml, 可以指定编码方式

热点排行