TinyXML不支持UNICODE的解决方法【改造TinyXML】
来源:互联网 发布:南宁广电网络收费标准 编辑:程序博客网 时间:2024/06/08 05:45
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不支持UNICODE的解决方法【改造TinyXML】 分类: C/C++ 2012-04-08 10:01 14278人阅读 评论(6) 收藏 举报 encodingmicrosoftb
- TinyXml对Unicode的支持
- tinyXML
- tinyxml
- TinyXml
- tinyxml
- TinyXML
- tinyxml
- tinyxml
- TinyXML
- TinyXML
- tinyxml
- TinyXml
- TinyXML
- tinyxml
- tinyXml
- TinyXML
- Windows Phone开发(28):隔离存储B
- 打印九九乘法表
- 16个经典面试问题回答思路
- mount状态下解决ora-01157
- Highways(POJ2485)
- TinyXML不支持UNICODE的解决方法【改造TinyXML】
- 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
- 用DBCA配置database control
- java笔记
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- 手工将oracle9i升到11g
- linux 查看可执行文件动态链接库相关信息
- YOUPAI的架构
- java笔记