有关宽字符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,定义如下:
wchar_t是按照UTF-16编码方式设定的,但是wchar_t只要两个字节,所以它只能表示UTF-16的一个子集。wchar_t就是存储的字符的unicode码值的编码值,在windows下就是unicode码值的UTF-16编码值:
在VS中,UNICODE编码和ANSI编码的区别如下:
具体信息详见:http://blog.csdn.net/nodeathphoenix/article/details/7416725
简单说下这两者之间的区别:
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
相关文章推荐
- Linux 与 Windows 对UNICODE 的处理方式
- Unicode详细分析解释
- Perl ASCII 字符判断
- vbs中将GB2312转Unicode的代码
- 程序员趣味读物 谈谈Unicode编码
- 与ASCII码相关的C语言字符串操作函数
- 常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)
- C#实现Json转Unicode的方法
- UTF-8、Unicode 标准化表单、BOM
- 浅谈Unicode与JavaScript的发展史
- JavaScript中字符串与Unicode编码互相转换的实现方法
- 使用VS开发 Node.js指南
- vs 不显示行号的操作方法
- jQuery实时显示鼠标指针位置和键盘ASCII码
- php utf-8转unicode的函数第1/2页
- php UTF-8、Unicode和BOM问题
- linux vs linux的优势
- 先装VS再装IIS时出错的解决方法
- Unicode 编码转换器
- ASCII