TinyXML不支持UNICODE的解决方法【改造TinyXML】 分类: C/C++ 2012-04-08 10:01 14278人阅读 评论(6) 收藏 举报 encodingmicrosoftb
2015-11-18 17:54
701 查看
TinyXML不支持UNICODE的解决方法【改造TinyXML】
分类: C/C++2012-04-0810:01 14278人阅读 评论(6) 收藏 举报
encodingmicrosoftbytewindowsstring语言
目录(?)[+]
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源码
版权声明:本文为博主原创文章,未经博主允许不得转载。相关文章推荐
- 用函数做形参
- c++ 多线程学习
- oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
- C++ 在函数中用static定义的变量的
- 在Android Studio中直接编译C/C++文件
- 《统计学习方法》+感知机+C++代码(简单)实现
- strnlen_s和strlen函数的区别
- 【总结】C语言中常见的字符串处理函数
- 推荐!国外程序员整理的 C++ 资源大全
- win编程实践(2)【c++】
- c++ 设置console字体颜色
- C语言的按位与、或、非、异或 左移右移
- More Effective C++ 学习笔记(3)
- 像元纯度指数算法C++实现
- 给一列算术表达式解析,并找到最终结果
- C/C++中extern关键字详解
- C/C++中extern关键字详解
- c++封装多线程2
- C语言中EOF NULL NUL和'\0'的区别和使用
- C++中引用(&)的用法和应用实例