#include<stdlib.h>
void wchar2char()//宽字节字符串转多字节字符串
{
//该方法只能转英文和数字
int i;
wchar_t *pwchello = L"Hello, world.";
int nLen = wcslen(pwchello)+1;//13+1
char *pmbbuf = (char *)malloc(nLen*sizeof(char));
printf( "Convert wide-character string:\n" );
i = wcstombs( pmbbuf, pwchello, nLen );
printf( "转换出的多字节字符串长度: %u\n", i );
printf( "转换出的多字节字符串: %s\n\n", pmbbuf );
free(pmbbuf);
}
输出结果:
Convert wide-character string:
转换出的多字节字符串长度:13
转换出的多字节字符串:Hello, world.
//转中文和英文数字结合
void wchar2char()//宽字节字符串转多字节字符串
{
int i;
wchar_t *pwchello = L"你好吗?abcd1";//
int nLen = wcslen(pwchello)*2+1;//9*2+1
char *pmbbuf = (char *)malloc(nLen*sizeof(char));
printf( "Convert wide-character string:\n" );
setlocale(LC_ALL,"");//设置本地编码格式param2为空,默认取当前编码格式ANSI
/*
setlocale(LC_ALL,".936");//设置当前编码格式为ANSI
或者setlocale
(LC_ALL,
"zh_CN.GBK"
);
setlocale(LC_ALL,"65001");/设置当前编码格式为UTF-8
或者setlocale
(LC_ALL,
"zh_CN.UTF-8"
);
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html
i = wcstombs( pmbbuf, pwchello, nLen );
printf( "转换出的多字节字符串长度: %u\n", i );
printf( "转换出的多字节字符串: %s\n\n", pmbbuf );
free(pmbbuf);
}