Java之字符集简单理解

一、字符

是各种文字和符号的总称, 包括国家文字, 数字, 标点符号等.

二、字符集

多个字符的集合。是字符的一种编码方示, 为每个字符指定了一个唯一的二进制编码。 简而言之, 就是为每个字符编号。

三、常见的字符集

ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。

四、unicode字符集

unicode通常用两个字节表示一个字符。

增补字符

unicode使用2个字节来表示字符, 因此最多能表示65535个字符。但是世界之大, 不可能只有65535个字符, 于是unicode将字符集进行扩展, 那些超出2个字节能表示的字符称为增补字符。

代码点
从JDK 5.0开始, 代码点表示unicode中每个字符对应的数字(编码)。 UTF-16编码采用不同长度的编码表示所有Unicode代码点。

代码单元
在0~65535表示的字符中, 每个字符用16位二进制表示, 通常被称为代码单元。

也就是说, 在0~65535的范围内, 一个字符用一个代码单元就能表示。增补字符使用2个代码单元表示。

参考资料:
解决生僻汉字,你需要了解Java的增补字符
关于Java增补字符


五、UTF-8编码

UTF(Unicode Transformation Format), 称为通用转换格式, 是针对unicode字符集的编码。简单理解就是将unicode字符集转换为另一种字符集, 也可以说是一种中间格式的字符集。

它是为了提高传输效率——
对于ASCII字符集来说, 使用一个字节就能表示, 如果使用unicode字符集的话, 就要多花一倍的空间。 对ASCII字符集来说, 高字节的0没有用处。

通常我们传输数据(图片、文字), 在网络传送中的数据都是二进制的。将UTF-8称为中间格式是因为, 编码之后经过传输, 最后要解码为unicode编码, 计算机根据编码才能正确显示数据。

UTF-8使用可变长度字节来储存 Unicode字符, 使用1~4字节为每个字符编码:

  • ASCIl字符只需1字节编码(Unicode范围由U+0000~U+007F)
  • 带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码(Unicode范围由U+0080~U+07FF)。
  • 其他语言的字符(包括中日韩文字、东南亚文字、中东文字等)包含了大部分常用字,使用3字节编码。
  • 其他极少使用的语言字符使用4字节编码。

参考资料:
最为透彻的utf-8、unicode详解
UTF-8有BOM和无BOM的区别


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值