您的位置:首页 > 其它

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

2016-05-13 12:35 253 查看
在工程文件时,常常遇到字符乱码的问题,查了下,归结于宽字符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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  VS Unicode ascii