unicode编码原理
文章目录
unicode编码原理
Unicode 编码共有三种具体实现,分别为utf-8,utf-16,utf-32,其中utf-8占用一到四个字节,utf-16占用二或四个字节,utf-32占用四个字节。Unicode 码在全球范围的信息交换领域均有广泛的应用。
Go语言中的Unicode与utf-8
链接:https://www.jianshu.com/p/6d5d9179fd8c
Go一个string类型的值在底层是怎样被表达的?
**一般回答:**在底层,一个string类型的值是由一系列相对应的Unicode代码点的UTF-8编码值来表达
问题解析
在Go语言中,一个string类型的值既可以被拆分为一个包含多个字符的序列,也可以被拆分成一个包含多个字节的序列。前者可以由一个rune为元素的切片来表示,而后者可以由一byte为元素类型的切片代表。
rune是Go语言中特有的一个基本数据类型,它的一个值就代表一个字符,即:一个Unicode字符。比如,‘G’, ‘o’, ‘爱’,‘好’,‘者’代表的就是一个Unicode字符。
我们已经知道,UTF-8UTF-8编码方案会把一个Unicode字符编码为要一个长度在[1, 4]
范围内的字节序列。所以,一个rune类型的值也可以由一个或多个字节来表示。
|
|
根据rune类型的声明可知,它实际上就是int32类型的一个别名类型。也就是说,一个rune类型的值会由四个字节宽度的空间来存储。它的存储空间总是能存下一个UTF-8编码值。 一个rune类型的值在底层其实就是一个UTF-8编码值。前者是便于人类理解的外部展现,后者是便于计算机理解的内在表达。
utf8 Bom
BOM (Byte order mark) 带标记
|
|
https://www.imooc.com/article/26166
c语言宽字符
文章作者 lyr
上次更新 2022-04-05