TinyXML不支持UNICODE的解决方法【改造TinyXML】 分类: C/C++ 2012-04-08 10:01 14278人阅读 评论(6) 收藏 举报 encodingmicrosoftb

转载 2015年11月18日 17:54:16

TinyXML不支持UNICODE的解决方法【改造TinyXML】

分类: C/C++ 14278人阅读 评论(6) 收藏 举报

目录(?)[+]

TinyXML目前仅直接支持解析UTF-8或者ASCII编码的XML, 对于其它编码必须经过转换才能使用, 这给Windows项目带来了麻烦, 频繁的编码转换也可能给性能带来巨大损失.


对此, 作者给出了解释的是"UTF-8 is not a double byte format - but it is a standard encoding of Unicode! TinyXML does not use or directly support wchar, TCHAR, or Microsoft's _UNICODE at this time. It is common to see the term "Unicode" improperly refer to UTF-16, a wide byte encoding of unicode. This is a source of confusion."


下面说说这样的局限性

                                        对于ASCII(多字节字符集)项目, 虽然支持UTF-8, 但却不能与控件直接交互, 必须经过转换, 否则不能支持中文.(But for English users , UTF-8 is the same as low-ASCII)

                                        而对于UTF-16(Unicode 字符集)项目, 情况更糟糕, 由于TinyXML使用char *, 你不能将其直接编译为宽字符版本, 即使编译了宽字符版本(替换char *等), 原来对UTF-8的支持就丧失了(需要修改处理方式).


对此, 我的解决方案是:

                                       1.将所有char用TCHAR代替, 将's'改为_T('s') 以及"str"改为_T("str")

                                        2.实现自己的String(可选), 这里主要是为了方便以及整合到rlib中

                                        3.在LoadFile/SaveFile中进行适当的编码转换

                                        4.对TinyXML的源码做部分修改


至此, TinyXML已经能够编译为宽字符版本了, 并且支持UTF-8,UTF-16,UTF-16F,ASCII, 易于拓展语言支持.


相关信息参见: RLIB源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

TinyXML不支持UNICODE的解决方法【改造TinyXML】

TinyXML目前仅直接支持解析UTF-8或者ASCII编码的XML, 对于其它编码必须经过转换才能使用, 这给Windows项目带来了麻烦, 频繁的编码转换也可能给性能带来巨大损失. ...
  • rrrfff
  • rrrfff
  • 2012年04月08日 10:01
  • 16920

封装tinyxml实现对UTF8和UNICODE编码格式转换

tinyxml对存储xml非常方便,但存储的格式却不是UTF8,导致实际使用中遇到读取问题。为了方便使用,我对tinyxml的数据转换做了一些封装,使使用更加方便些。详细见一下代码:  #pragma...
  • tomyi
  • tomyi
  • 2014年03月01日 18:04
  • 1038

TinyXml对Unicode的支持

       使用的是开源代码。事实上TinyXml不支持Unicode。       从以下几点说明:1.  TinyXml的开源代码并不支持Unicode编码格式,而是多字节编码。2.  Ti...
  • primer_programer
  • primer_programer
  • 2007年12月26日 17:20
  • 10376

tinyxml在MFC、UNICODE中的应用

1、下载tinyxml,下载地址:http://sourceforge.net/projects/tinyxml/2、把tinyxml工程中的tinyxml.h,tinyxml.cpp,tinystr...
  • zst126
  • zst126
  • 2007年12月10日 11:13
  • 4653

C++通过TinyXML类库读写XML文件

TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树...
  • tennysonsky
  • tennysonsky
  • 2015年09月21日 18:28
  • 10753

Win系统C++ TinyXML使用心得总结

一、TinyXml的特点         TinyXml是一个基于DOM模型的、非验证的轻量级C 解释器。它是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这...
  • lhb_0531
  • lhb_0531
  • 2013年02月22日 16:38
  • 2890

tinyxml删除,添加,修改xml文件

TinyXML是一个简单的、小的、最小的、C + + XML解析器,可以很容易地集成到其他项目。它读取XML和XML文档创建c++对象代表。可以操纵的对象,再次改变,并保存为XML。 可以从...
  • DEV_linux
  • DEV_linux
  • 2015年12月03日 15:22
  • 3211

Linux下C++使用TinyXML解析XML文件

最近的由于项目需要解析XML文件,偷懒在网上找了一下开源的解析XML的源码学习了一下。发现一个上手很快,简单的开源解析XML的项目TinyXML。 TinyXML可以解析UTF-8编码格式的DOM标...
  • cscmaker
  • cscmaker
  • 2012年03月19日 19:22
  • 5040

用TinyXML读写XML

       TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器, 用来读写配置文件是最好的,可从http://www.grinninglizard.com/tinyxml/index....
  • riag
  • riag
  • 2007年01月07日 10:30
  • 4422

TinyXML进行XML字符串与XML文件转化

//XML字符串转入XML格式 TiXmlDocument *myDocument = new TiXmlDocument(); myDocument->Parse(szFileName)...
  • fin86889003
  • fin86889003
  • 2014年04月10日 09:39
  • 849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TinyXML不支持UNICODE的解决方法【改造TinyXML】 分类: C/C++ 2012-04-08 10:01 14278人阅读 评论(6) 收藏 举报 encodingmicrosoftb
举报原因:
原因补充:

(最多只允许输入30个字)