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

本文档介绍了在Windows系统中编程时的两种字符集——ANSI(MBCS)和Unicode。ANSI使用多字节字符,适合英文字母,但在处理非西方字符时受限。Unicode则采用双字节方式,能统一表示各种语言的文字。Windows NT提供两种版本的函数,而Windows 9x仅支持ANSI。通过定义_UNICODE和UNICODE宏,可以切换编译方式。在实际开发中,使用_T和_L宏来处理字符串。笔记还记录了后续学习计划和更新内容。

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


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者: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创建笔记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值