赞
踩
文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
在Windows系统中,使用VS编程时,有两种字符集:ANSI(使用多字节字符)和 Unicode(使用 Unicode 字符集),如下图示:
ANSI(即MBCS): 为多字节字符集,它是不定长表示世界文字的编码方式。ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节(在处理中文字符时 使用双字节方式)。ANSI字符采用8bit,能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语,日语等有着成千上万个字符的非西方字符肯定就不够了。
Unicode: 不管是英文字符还是中文字符都是采用双字节方式表示。比如字符 ‘A’ 在 ASCII 下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用 ‘0’ 填充;字符汉字 “你” 在ASCII下面用两个字节表示,而在Unicode下面也是用两个字节表示。Unicode 的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。
Windows NT的所有与字符有关的函数都提供了两种方式的版本,而Windows 9x只支持ANSI方式。如果编码方式为ANSI,_T不起任何作用;如果编码方式为Unicode,编译器会把"你好!"以Unicode方式进行保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以Unicode方法保存。
如何区分:
在我们软件开发中往往需要即支持 ANSI 又支持UNICODE,不可能在要求类型转换的时候,重新改变字符串的类型,和使用于字符串上的操作函数。为此, 标准的C 运行期库和Windows 提供了宏定义的方式。 在C语言里面提供了 _UNICODE 宏(有下划线),在Windows里面提供了 UNICODE 宏(无下划线),只要定了 _UNICODE 宏和 UNICODE 宏,系统就会自动切换到 UNICODE 版本,否则,系统按照 ANSI 的方式进行编译和运行。 只定义了宏并不能实现自动的转换,他还需要一系列的字符定义支持。
时间 | 内容 |
---|---|
2020-11-15 | 创建笔记 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。