当前位置:   article > 正文

VS编译器中的字符集(多字节和Unicode)的区别_vs unicode与多字节字符集区别

vs unicode与多字节字符集区别

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888

1、简述

  在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创建笔记
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/488552
推荐阅读
相关标签
  

闽ICP备14008679号