汉字3字节,rune4字节,为什么index[3]的下一个是index[6]?
来源:3-6 字符和字符串处理

拧壶冲
2020-08-26
如标题,汉字占3个字节,rune是4个字节的,那么既然是以rune的结构存放的汉字,那么每个数据都应该是4个字节才对啊,为什么index[3]的下一个汉字的其实index是6?
写回答
1回答
-
go语言的字符串本身是utf-8编码的,汉子占三个字节,所以[3]后面是[6]
当我们用for循环来拿里面的元素时,for i, ch := range s,这里获得的ch已经经过了utf-8 => unicode的转换,转换的结果放在了ch里面。utf-8和unicode是不同的编码方式。
我们这里也看到,这个字符的utf-8编码是0xE68595,而我们拿到的ch是0x7231,go语言的运行环境已经帮我们做了一次转换
022020-09-03
相似问题