有关宽字符wchar_t编码方式的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SarahZhang0104/article/details/51394315

在工程文件时,常常遇到字符乱码的问题,查了下,归结于宽字符wchar_t和窄字符char的区别。
简单说下这两者之间的区别:
1、char是8bit数据,能表示ASCII码中前256个字符,包括前128个可见字符和后128个不可见字符。
2、wchar_t是因为char所能表示的字符数太少(256个)而应运而生的,它的长度可以8bit,16bit,32bit,长度是与不同平台上的c库相关的。其实这个长度是根据指定平台上想要用的encoding编码方式来设定的。

在win32 MSVC环境下,c库中wchar_t的长度是2个byte,定义如下:

    typedef unsigned short wchar_t; /* 16 bits */

wchar_t是按照UTF-16编码方式设定的,但是wchar_t只要两个字节,所以它只能表示UTF-16的一个子集。wchar_t就是存储的字符的unicode码值的编码值,在windows下就是unicode码值的UTF-16编码值:

在VS中,UNICODE编码和ANSI编码的区别如下:

 wchar_t   w1= L'中';  //Unicode 编码
 wchar_t   w2= '中';   //Ansi编码

具体信息详见:http://blog.csdn.net/nodeathphoenix/article/details/7416725

猜你喜欢

转载自blog.csdn.net/SarahZhang0104/article/details/51394315