huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


MultiByteToWideChar和WideCharToMultiByte是winapi函数,专门进行char和wchar的转换


用wsprintf是理想的转换方式,但是经常转换出来的结果是乱码,十分令人费解。


于是我们可以用MultiByteToWideChar

MultiByteToWideCharchar -> wchar_t):

char ch[128] = { 0 };
sprintf(ch,"hello");    //对待转换的char变量赋值

wchar_t wch[128] = { 0 };    // 务必进行初始化  
MultiByteToWideChar(CP_ACP, 0, ch, -1, wch, 128/* 数组大小 */);


WideCharToMultiBytewchar_t -> char):

// 返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
int nSize = WideCharToMultiByte(CP_ACP, 0, str_wchar_t, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, str_wchar_t, -1, str_char, nSize , NULL, NULL);

因为在wchar_t中中英文都只占一位,但在char中需要两位,所以需要使用nSize得到char变量所需的缓冲区大小。

https://www.cnblogs.com/vranger/p/3792791.html


以上代码实测通过

然后乱码就不会出现了。


使用示例:http://www.huidong.xyz/index.php?mode=2&id=93 



返回首页


Copyright (C) 2018-2024 huidong