rapid读取utf-8 格式xml乱码问题,在线等~

camelisi 2013-10-31 08:51:53
RT,最近项目想把XML解析工具换掉,换成支持unicode的更有效率的rapidxml,但是就出现了问题,就是读取utf-8等unicode格式xml加载的中文总是乱码,官方手册也没说到这个,百度谷歌了很久也没找到答案,因为暂时还不想把格式转换成ansi,所以想咨询下各位,有过类似问题的是怎么处理的?求解惑,在线等。
...全文
516 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
五厘米的距离 2015-02-04
  • 打赏
  • 举报
回复
我的博客,解决方法如http://blog.csdn.net/bjy0326/article/details/43465903,求分?
wangsiyuanoo 2014-03-03
  • 打赏
  • 举报
回复
LZ最后怎么解决的?
max_min_ 2013-10-31
  • 打赏
  • 举报
回复
可能不是乱码的哦!
赵4老师 2013-10-31
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
  • 打赏
  • 举报
回复
引用 2 楼 camelisi 的回复:
我这样判断的,用记事本保存为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貌似提供了不同编码的枚举,找找源码里面的解析
绿皮蛙 2013-10-31
  • 打赏
  • 举报
回复
你可以用16进制打开看一下你保存的文本,看看哪里出问题了,另外utf8和unicode是两种编码方式,unicode保存的时候你还要注意处理器的大小端问题
camelisi 2013-10-31
  • 打赏
  • 举报
回复
我这样判断的,用记事本保存为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
turing-complete 2013-10-31
  • 打赏
  • 举报
回复
你怎么判断是乱码的? 别让操作系统和一些工具迷惑了。
mujiok2003 2013-10-31
  • 打赏
  • 举报
回复
试试pugixml, 可以指定编码方式
camelisi 2013-10-31
  • 打赏
  • 举报
回复
引用 6 楼 max_min_ 的回复:
可能不是乱码的哦!
ANSI这种就是正常的,要做到这样就好了,原始的UNICODE不行
camelisi 2013-10-31
  • 打赏
  • 举报
回复
引用 6 楼 max_min_ 的回复:
可能不是乱码的哦!
版主啊,我想把他存到wstring里面去,正常显示中文。。乱码的话就没辙了,转换的代码也试过,转了还是。。求指导求推荐啊

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧