前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

聊一下Unicode及UTF-8、UTF-16、UTF-32

qiguaw 2024-09-11 06:20:37 资源文章 22 ℃ 0 评论

简洁的语言说简单的事

Unicode 字符集

Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符集,它定义了文字和二进制的对应关系,并为每个字符分配了一个唯一的编号。编号靠前的需要一个字节存储,编号靠后的需要三个字节才能存储。

注意:Unicode 只是一个字符集,如果要将字符存储到内存,还需要使用UTF字符编码,它规定了如何将文字的编号存储到内存中


UTF 编码

UTF 是 Unicode Transformation Format 的缩写,意思是“Unicode转换格式”

Unicode 可以使用的编码有三种,分别是:

  • UTF-8:一种变长的编码方案,使用 1~6 个字节来存储;
  • UTF-16:介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,长度既固定又可变。
  • UTF-32:一种固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储;

UTF-8

utf-8 编码规则很简单:如果只有一个字节,那么最高的比特位为 0,兼容ASCII 编码;如果有多个字节,那么第一个字节从最高位开始,连续有几个比特位的值为 1,就使用几个字节编码,剩下的字节均以 10 开头。

  • 单字节编码:0xxxxxxx
  • 双字节编码:110xxxxx 10xxxxxx
  • 三字节编码:1110xxxx 10xxxxxx 10xxxxxx
  • 四字节编码:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

UTF-16

UTF-16 将Unicode字符集分成两部分,第一部分对于 Unicode 编号范围在 0 ~ FFFF 之间的字符,使用两个字节存储,并且直接存储 Unicode 编号,不进行编码转换。第二部分对于 Unicode 编号范围在 10000~10FFFF 之间的字符,使用四个字节存储

  • 双字节:xxxxxxxx xxxxxxxx
  • 四字节:110110xx xxxxxxxx 110111xx xxxxxxxx

UTF-32

UTF-32 是固定长度的编码,始终占用 4 个字节,足以容纳所有的 Unicode 字符,所以直接存储 Unicode 编号即可,不需要任何编码转换。浪费了空间,提高了效率

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表