windows核心编程(字符编码)

一、字符编码

字符集

1)字符集是字符的数字代码集。有ANSI/ASCII、MBCS(Multibytes)、Unicode等。比如“汉”字Unicode代码为0x6c49。

编码方案

2)编码方案是记录字符代码的方式。有UTF-8、UTF-16、GB2312等。编码方案分“变长编码”与“定长编码”两种。UTF-8是变长编码(汉字有的两字节有的三字节),而UTF-16是两字节定长的编码。

字符集与编码方案

3)字符集与编码方案是配套的。如GB2312编码,即是GB2312字符集与GB2312编码方案。此处GB2312为两字节定长编码。而提到的Unicode编码,即指Unicode字符集与UTF-X编码方案。其中UTF-16为两字节定长编码,UTF-8设计为变长是为了应用中兼容已有的ANSI/ASCII编码,并广泛应用于互联网业务。

Multibytes与Unicode

1)vc下,或者win32中,两者之别等价于变长与定长编码之分,或者说是采用非UTF-16还是UTF-16之分。

2)从winNT内核以来,win OS已全面更新为UTF-16编码。

3)此处Unicode仅指Unicode字符集配UTF-16编码。其余,UTF-8、UTF-7、GB2312、ANSI/ASCII等一律划归Multibytes。故而Multibytes应理解为“变长”字符,而非“多”字符。

 VS工程应用

 工程属性设置字符集为Multibytes或Unicode。这是用来切换winapi版本的,是用Ansi或Unicode版本。

二、ANSI字符和UNICODE字符与字符串数据类型

1)在C中char类型表示一个8位ANSI字符。

如下表示:

char c = 'A';//即在内存中占用一个字节的空间

2)wchar_t表示一个16位的Unicode(UTF-16)字符。

wchar_t c = L'A';//在内存中占用两个字节的空间

 

 

 

 

 

posted on 2014-06-24 22:40  奎哥  阅读(622)  评论(0编辑  收藏  举报