【计算机基础】Unicode字符集 与 多字节字符集

=======================事情是这样的==========================


在调试某程序时,发生了这样的错误:


char 与 LPCWSTR 类型不兼容


搜索了一下发现是字符集的原因。


项目>>属性>>字符集>>使用多字节字符集


或者,每个字符串“xxxxx”改为_T("xxxxx"),char类型改为wchar_t 或者 LPCSTR


即可解决。


于是深入探究一下字符集的相关



=======================以下正文==============================


计算机中每一个字符都是由编码表示的。

我们最熟悉的 ASCII码:


全称:American Standard Code for Information Interchange    美国标准信息交换代码

(一直以为是II是罗马数字2……)


该代码是由是由美国国家标准学会(American National Standard Institute , ANSI )制定的


后来,又进行了扩展,由最初的7位128个字符扩展到8位256个字符:



再后来,又有其他国家文字的加入,各国都需要有自己的字符集。

于是他们在ASCII的基础上,制定了自己的字符集,这些由ASCII派生出来的字符集都成为ASCI字符集,(这些字符集都是以7位128个字符的ASCII为基础)

正式的名称:MBCS(Multi-Byte Chactacter System,即多字节字符系统)


最常见的GB_2312就是其中之一。

以GB_2312为例:


GB_2312收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共7445个图形字符。其中包括6763个汉字,其中一级汉字3755个,二级汉字3008个;包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符

(科普:汉字大概6800个)


所谓 多字节字符集 的精髓就是,用多个字节的组合来表示代码。

例如:“连通”两个字的编码为:C1 AC CD A8

C1 AC 表示 “连”,

C1为leading byte 引导字节,可以理解为“区号”,当leading byte 小于128时,自动作为ASCII码进行处理。

AC为实际编码字节,可以理解为“位号”


分区表示:
GB_2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。
各区包含的字符如下:01-09区为特殊符号;16-55区为一级汉字,按拼音排序;56-87区为二级汉字,按部首/笔画排序;10-15区及88-94区则未有编码。
双字节表示
两个字节中前面的字节为第一字节,后面的字节为第二字节。习惯上称第一字节为“高字节”,而称第二字节为“低字节”。
“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值