字符集 java

字符集

1 有哪些字符集?

1)ASCII:美国标准信息交换码,用一个字节的7位可以表示。

2)ISO8859-1:拉丁码表,欧洲码表,用一个字节的8位表示。

3)GB2312:中国的中文编码表,最多两个字符编码所有字符,英文还是沿用ASCII的一个字节表示一个字母,为的是节省空间。

4)GBK:中国的中文编码表升级,融合了更多的中文文字符号,还是最多两个字节编码。

5)Unicode:国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码,所有的语言每一个字符都有对应的字符编码,所有的文字都用2个字节表示。Unicode字符集知识定义了字符的集合和唯一编号,Unicode编码,则是对UTF-8,UCS-2/UTF-16等具体编码方式的统称而已,并不是具体的编码方案。

6)UTF-8:变长的编码方式,可用1-4个字节表示一个字符。(后续修正可能使用6个字节)

2 问题

1)中文码表最多两个字节表示一个字符,那么有没有可能会将两个字母字节当做成一个两个字节大小的中文字符来读取呢?采用的办法就是,在首个字节的首位做标记,如果首个字节的首位是1就代表两个字节读取一个字符,如果首位是0,则表示当前只需要读一个字节。

2)使用Unicode编码时也会出现不知道是将两个字节读为一个字符还是读为两个字符的问题,这时大家可能会想,很中文编码表一样解决不就行了?在首个字节的首个比特位做标记。可是这里不能这样,因为做了标记,我们不就少了一个比特位了吗,能够表示的字符数量就会减少。两个字节本来可以表示2的16次方个字符,现在使用第一个比特位做标记后,就只能表示2的15次方个字符了,用来表示全世界的字符就不够用了。

这里可能大家第一个想到的就是,两个字节不够表示全世界的字符,那我们多加一个字节,最多用三个字节表示一个字符,还是用首个字节的首个比特位作为要读取几个字节的标识怎么样?这显然不行,首个比特位0表示读取一个字节,1表示读取两个字节,那现在一次要读取三个字节又该如何表示呢?

在这里插入图片描述

UTF-8用的是最多四个字节表示一个字符,0:读取一个字符;110:读取两个字符;1110:读取三个字符;11110:读取四个字符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值