unicode和多字节字符集的区别,该如何解决
unicode和多字节字符集的区别
我用VC+ArcGIS10二次开发,在项目属性中,如果选择Unicode,程序没有问题。但是如果用多字节,开发以后,界面上菜单只要有中文的地方,都会是出现一连串的问号。????????
原始的问题,在下面的帖子里面有,错误的界面提示也有。
http://bbs.esrichina-bj.cn/ESRI/thread-97480-1-1.html
------解决方案--------------------
读到多字节菜单字符串之后,用MultiByteToWideChar()转为unicode字符串
或者 使用API的A版本来设置菜单的显示名称,比如,SetMenuItemInfoA(...)
------解决方案--------------------
如果你新的库是Unicode的,就用Unicode开发,摒弃多字节编码,多字节编码弊端太多了。
其实改起来很简单,你把所有的char都改成TCHAR,如果能用CString,尽量用CString。所有字符串函数都换上带_t的版本,比如_tsprintf()、_tcscpy之类的……因为这些东西都是同时兼容Unicode和ANSI的,所以改起来很容易。
我用VC+ArcGIS10二次开发,在项目属性中,如果选择Unicode,程序没有问题。但是如果用多字节,开发以后,界面上菜单只要有中文的地方,都会是出现一连串的问号。????????
原始的问题,在下面的帖子里面有,错误的界面提示也有。
http://bbs.esrichina-bj.cn/ESRI/thread-97480-1-1.html
------解决方案--------------------
读到多字节菜单字符串之后,用MultiByteToWideChar()转为unicode字符串
或者 使用API的A版本来设置菜单的显示名称,比如,SetMenuItemInfoA(...)
------解决方案--------------------
如果你新的库是Unicode的,就用Unicode开发,摒弃多字节编码,多字节编码弊端太多了。
其实改起来很简单,你把所有的char都改成TCHAR,如果能用CString,尽量用CString。所有字符串函数都换上带_t的版本,比如_tsprintf()、_tcscpy之类的……因为这些东西都是同时兼容Unicode和ANSI的,所以改起来很容易。