在使用VS
进行编码过程中,查看项目属性看到项目的默认值下有一个字符集选项,看下图:
多字节字符集
在最初的Internet
上只有一种字符集–那就是ASCII
字符集,它相信大家都知道,它使用7bits来表示一个字符,总共表示128
个字符,其中包括英文字符、数字、标点符号等字符。在后来有进行扩展,使用8
个bits
来表示一个字符,总共可以表示256
个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号。后来,由于各国语言的加入,ASCII
已经不能满足信息交流的需要,为了能够表示其它国家的文字,各国在 ASCII
的基础上制定了自己的字符集,这些从ANSI标准派生的字符集被习惯的统称为ANSI
字符集,它们正式的名称应该是MBCS(Multi-Byte Chactacter System,即多字节字符系统)
。
Unicode
字符集(宽字节字符集)
Unicode
的学名 是"Universal Multiple-Octet Coded Character Set"
,简称为UCS
。UCS
只是规定如何编码,并没有规定如何传输、保存这个编码。
Unicode
字符集有多种编码形式,而它固定使用16bits
(两个字节、一个字)来表示一个字符,共有65536
个字符
为了双字节的Unicode
能够在处理单字节的系统上正确传输,出现了UTF-8。
- UTF-8的编码方式它属于
Unicode
字符集的一种。- 标准的
Unicode
为UTF-16
- UTF-8以字节为编码单元,没有字节序的问题。
UTF-16
以两个字节为编码单元。
推荐使用Unicode字符和字符串
- 使用
Unicode
,只需发布一个二进制(.exe或DLL)文件,即可支持所有语言 Unicode
代码执行速度更快,占用内存更少,提升了应用程序的效率。自从Windows2K
开始,Win
的系统内核开始完全支持并完全应用Unicode
编写,所有ANSI
字符在进入底层前,都会被相应的API
转换成Unicode
。所以,如果你一开始就使用Unicode
,则可以减少转换的用时和RAM
开销。- 使用
Unicode
,代码容易与COM
集成、与.NET Framework
集成、 - 世界上大多数程序用的字符集都是
Unicode
,因为Unicode
有利于程序国际化和标准化
对Unicode
的操作
字符集 | 特性 | 实例 |
---|---|---|
ANSI(是一种对于ASCI码的扩展) | 操作函数以str开头 | strcpy |
Unicode | 操作函数以wcs开头 | wcscpy |
MBCS | 操作函数以_mbs开头 | _mbscpy |
ANSI/Unicode | 操作函数以_tcs开头 | _tcscpy(C运行期库) |
ANSI/Unicode | 操作函数以lstr开头 | lstrcpy(Windows函数) |
参考文章: