面试题 为什么char可以存储中文?

文章讨论了字符编码的历史,从ASCII码开始,描述了由于不同国家字符需求导致的各种编码表如GB2312、BIG5和GBK,以及最终Unicode的出现来解决多语言字符表示的问题。Unicode允许表示包括汉字在内的多种语言字符,其编码范围覆盖了char类型的数据所能表示的值。
摘要由CSDN通过智能技术生成

char是基本类型数据,取值成为0-65535;

数字怎么代表字符呢?

美国人最先想出了了一套规则ASII码表,将美国人常用的字符,人为的进行排列,从0-128每位数字对应一个字符,说白了就是人为规定一个数值对应一个符号,比如a对应的数值就是97,A对应的数值是65,ASII码表的取值范围0-128

美国的这一套规则并没有包含世界上所有国家的字符,每个国家开始自己国家的字符对应数值的编码,所以出现了很多编码表.

但这样每个国家的互联网互相交互时,出现冲突.就好比中国设定数值100对应字符为'中',日本设定数值100对应字符为'日',两国互联网用户访问时,会发现浏览器接收到的数据会变成乱码,需要更换解码的规则,这样给互联网地球村带来困扰;

地球上管闲事的组织ISO出面说自己统一组织编写一套地球上所有的字符对应的数值的编码表(unicode) ,

常用的汉字在此表中对应的数值范围一万九到四万多, 这时候重点来了,char的取值范围是0-65535,所以在unicode的编码规则下是可以表示汉字的

简单点回答就是在unicode编码表中汉字的编码范围基本是为2万到4万左右,char可以表示该区间的数值,所以char可以表示一个汉字.如果有一个汉字没有在该范围内,则char无法表示.

这一到面试题基本没有什么价值,

不过可以考虑一下如何表示65535之外的字符用什么类型的数值表示?比如十六进制的100F6 对应十进制65782,在IDEA中如何显示出来该字符?

 

 

 

补充 汉字对应的编码表

GB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。

BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。

GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。

GB18030编码:2000年3月17日发布的汉字编码国家标准,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集。

Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值