MFC Unicode字符编码使用困惑
答案:1 悬赏:80 手机版
解决时间 2021-02-24 21:08
- 提问者网友:疯子也有疯子的情调
- 2021-02-24 04:03
修改 控制面板-区域语言选择“英语(美国)”后,MFC界面变“??”。查证是和工程属性采用多字节编码有关。改成unicode,由于涉及到tinyxml采用多字节。对外参数都是const char * ,自己用单字节到宽字符转换处理后造成XML中文读取显示是乱码,对于兼容宽字符的处理怎么做比较合适? TinyXML 内部解析字符串全是以 char* 类型来解析,只支持多字节编码如 UTF-8,ASCII,不支持 UNICODE 编码。如对中文的支持就比较古怪,如果 XML 以 UTF-8 格式保存,则设置“值”的时候必须自己把字符串转换为 UTF-8 再设置,而在取得值以后,则必须自己将它们从 UTF-8 转换成 UNICODE 或 ASCII,否则就是乱码。主要是 TinyXML 为了跨平台,所以没有像 MultiBytesToWideChar 和 WideCharToMultiBytes 这种函数的直接支持。不过如果是为了跨平台,这两个函数也可以考虑自己实现。
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-02-24 05:24
在编译选项里。 ASCII的话,可以使用MBCS来指定。 UNICODE的话,需要指定_UNICODE, UNICODE,另外代码中字符串常量用TEXT宏括起来。字符串函数也要改成支持unicode宽字符的函数如strcpy要改成lstrcpy等。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯