系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
来源:互联网 发布:网络电视不清楚怎么办 编辑:程序博客网 时间:2024/06/05 00:33
主要是WideCharToMultiByte的第一个参数codepage造成的,如前面所使用的CP_ACP所表达的意思是使用系统字符集转换,但是由于此时的系统字符集为英文,在这个codepage中并没有中文,所以转换出错.
1.在正常的中文系统下执行MultiByteToWideChar很正常,其中,第一个参数为:CP_ACP
char* unicodeTOansi(const wchar_t* unicode){ // unicode to ansi // wchar_t* wszString = L"abcd1234ÄãÎÒËû"; //Ԥת»»£¬µÃµ½ËùÐè¿Õ¼äµÄ´óС£¬Õâ´ÎÓõĺ¯ÊýºÍÉÏÃæÃû×ÖÏà·´ int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, unicode, wcslen(unicode), NULL, 0, NULL, NULL); //ͬÉÏ£¬·ÖÅä¿Õ¼äÒª¸ø'\0'Áô¸ö¿Õ¼ä char* szAnsi = new char[ansiLen + 1]; //ת»» //unicode°æ¶ÔÓ¦µÄstrlenÊÇwcslen ::WideCharToMultiByte(CP_ACP, NULL, unicode, wcslen(unicode), szAnsi, ansiLen, NULL, NULL); //×îºó¼ÓÉÏ'\0' szAnsi[ansiLen] = '\0'; return szAnsi;}
2.在英文系统下执行MultiByteToWideChar,取得的字符编码全部变成了3F,后将"CP_ACP"替换为936,就正常显示了。
在英文系统下:
#define CP_ACP 0// default to ANSI code page
char* unicodeTOansi(const wchar_t* unicode){ // unicode to ansi // wchar_t* wszString = L"abcd1234ÄãÎÒËû"; //Ԥת»»£¬µÃµ½ËùÐè¿Õ¼äµÄ´óС£¬Õâ´ÎÓõĺ¯ÊýºÍÉÏÃæÃû×ÖÏà·´ int ansiLen = ::WideCharToMultiByte(936, NULL, unicode, wcslen(unicode), NULL, 0, NULL, NULL); //ͬÉÏ£¬·ÖÅä¿Õ¼äÒª¸ø'\0'Áô¸ö¿Õ¼ä char* szAnsi = new char[ansiLen + 1]; //ת»» //unicode°æ¶ÔÓ¦µÄstrlenÊÇwcslen ::WideCharToMultiByte(936, NULL, unicode, wcslen(unicode), szAnsi, ansiLen, NULL, NULL); //×îºó¼ÓÉÏ'\0' szAnsi[ansiLen] = '\0'; return szAnsi;}
- 系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
- 系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
- 系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
- 系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
- 系统在英文状态下调用 MultiByteToWideChar 中文乱码问题
- ubuntu 系统 英文locale的情况下 安装中文输入法
- debian下英文系统切换为中文
- 英文系统下,写入中文
- 修改home下的中文目录为英文目录
- 修改home下的中文目录为英文目录
- 改home下的中文目录为英文目录
- 修改home目录下的中文目录为英文
- 英文系统下传输中文字符的问题!
- Ubuntu英文系统下中文输入法的添加
- delphi7的程序在英文系统下显示中文乱码
- debian英文系统切换为中文
- centos下如何修改中文为英文
- 英文环境下svn签出包含中文的文件时失败的处理方法
- struts笔记
- 今天是13年的第一个周末
- 运用加密技术保护Java源代码
- Java的ThreadPoolExecutor(二)
- Linux/MIPS启动分析
- 系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
- Archie OSG Step By Step⑦MFC修改鼠标,制作半透明窗口,视口全屏以及添加背景音乐。
- 那些藏身于注释的“功能”
- extern-c,c++关键字(2)
- java反射机制应用场景
- flex元数据[Bindable]的意义和使用
- IplImage, CvMat, Mat 的关系
- linux中静态库和动态库的生成以及使用
- 东北旅游流程