感觉比较混乱,学习了一通,做个记录。
着急在windows下面用的话,可以先看这个:
VC++ Windows平台字符透明编程大总结
http://blog.csdn.net/hellothere/article/details/612718
宽字符串与单字节字符串之间的转换。
C++标准里面已经提供了:
宽字节转单字节:size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );
单字节转宽字节:size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );
只能一个一个的转换,也就是说一次只能转换一个字符
微软的函数
宽字节转多字节:WideCharToMultiByte
多字节转宽字节:MultiByteToWideChar
宽字符串 转换为 char字符串 的例子。
BSTR devname; //olewchar 其实就是wchar
char *name=NULL;
pNCP->get_Name(&devname);
DWORDn=WideCharToMultiByte(CP_OEMCP,NULL,devname,-1,NULL,0,NULL,FALSE);
name=new char[n];
WideCharToMultiByte(CP_OEMCP,NULL,devname,-1,name,n,NULL,FALSE);
cout<<name<<endl;
delete [] name;
将 char字符串 转换为 unicode字符串,也就是宽字符。
char sText[20] = {"其实我就是所谓的多字节字符串"};
DWORD dwNum = MultiByteToWideChar (CP_ACP,0, sText, -1, NULL, 0);
wchar_t *pwText;
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_ACP, 0, pwText, -1,sText, dwSize);
if(!pwText)
{
delete []pwText;
}
Unicode和多字节字符集 (MBCS) 杂谈
http://blog.sina.com.cn/s/blog_72e928910100yklp.html
字节码问题--wchar和char的区别以及wchar和char之间的相互转换字符编码转换等方法及函数介绍
http://www.cnblogs.com/MichaelOwen/articles/2128771.html
该文看的出来非常的用心的总结了。而他附录的几个内容也是可供学习的:
网上不错的资源:
C/C++ 编程中多国语言处理
http://www.ibm.com/developerworks/cn/linux/l-cn-ccppglb/index.html?ca=drs-
彻底解密C++宽字符:1、从char到wchar_t
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740615.aspx
彻底解密C++宽字符:2、Unicode和UTF
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740616.aspx
彻底解密C++宽字符:3、利用C运行时库函数转换
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740618.aspx
彻底解密C++宽字符:4、利用codecvt和use_facet转换
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740620.aspx
彻底解密C++宽字符:5、利用fstream转换
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740621.aspx
彻底解密C++宽字符:6、国际化策略
http://blog.csdn.net/wallaceli1981/archive/2010/07/16/5740622.aspx
C 源文件内的中文(1)
http://hi.baidu.com/cyclone/blog/item/e48c76099b002ca22eddd4c3.html
C 源文件内的中文(2)
http://hi.baidu.com/cyclone/blog/item/25b262d973e9d72111df9bcf.html
UTF-8 and Unicode FAQ for Unix/Linux
http://blog.csdn.net/lovekatherine/archive/2007/08/30/1765903.aspx