Linux下面的没有命名为 WideCharToMultiByte() 和 MultiByteToWideChar() 函数,WideCharToMultiByte,MultiByteToWideChar是windows下的函数,在linux下也有类似的两个函数:
mbstowcs()
wcstombs()
值得注意的是:
size_t mbstowcs(wchar_t *wcstr,const char *mbstr,size_t count);
这个函数的第三个参数count,大小一定要是mbstr长度的2倍,否则出来的中文也会是乱码。
测试一下:
setlocale(LC_ALL,"zh_CN.GB18030");
wchar_t wcstr[20] = L"字符测试123abc";
int len = wcslen(wcstr)+1;
printf("len = %d /n",len);
for(int i = 0; i < len; i++)
printf("0x%08x ",wcstr[i]);
printf("/n");
char str[55] = {0};