MFC Unicode字符编码使用困惑
修改控制面板-区域语言选择“英语(美国)”后,MFC界面变“??”。查证是和工程属性采用多字节编码有关。改成unicode,由于涉及到tinyxml采用多字节。对外参数都...
修改 控制面板-区域语言选择“英语(美国)”后,MFC界面变“??”。查证是和工程属性采用多字节编码有关。改成unicode,由于涉及到tinyxml采用多字节。对外参数都是const char * ,自己用单字节到宽字符转换处理后造成XML中文读取显示是乱码,对于兼容宽字符的处理怎么做比较合适? TinyXML 内部解析字符串全是以 char* 类型来解析,只支持多字节编码如 UTF-8,ASCII,不支持 UNICODE 编码。如对中文的支持就比较古怪,如果 XML 以 UTF-8 格式保存,则设置“值”的时候必须自己把字符串转换为 UTF-8 再设置,而在取得值以后,则必须自己将它们从 UTF-8 转换成 UNICODE 或 ASCII,否则就是乱码。主要是 TinyXML 为了跨平台,所以没有像 MultiBytesToWideChar 和 WideCharToMultiBytes 这种函数的直接支持。不过如果是为了跨平台,这两个函数也可以考虑自己实现。
展开
1个回答
2014-02-28
展开全部
在编译选项里。 ASCII的话,可以使用MBCS来指定。 UNICODE的话,需要指定_UNICODE, UNICODE,另外代码中字符串常量用TEXT宏括起来。字符串函数也要改成支持unicode宽字符的函数如strcpy要改成lstrcpy等。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询