unicode编码和utf-8的区别(聊一下Unicode及UTF-8UTF-16UTF-32)

简洁的语言说简单的事Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符集,它定义了文字和二进制的对应关系,并为每个字符分配了一个唯一的编号编号靠前的需要一个字节存储,编号靠后的需要三个字节才能存储,今天小编就来说说关于unicode编码和utf-8的区别?下面更多详细答案一起来看看吧!

unicode编码和utf-8的区别(聊一下Unicode及UTF-8UTF-16UTF-32)

unicode编码和utf-8的区别

简洁的语言说简单的事

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 编号即可,不需要任何编码转换。浪费了空间,提高了效率

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页