TODO:字节的那点事Go篇

TODO:字节的那点事Go篇数组

(本文go version go1.7.3 darwin/amd64)编码

在Golang中string底层是由byte数组组成的。code

fmt.Println(len(“dsd好”))orm

输出的长度是6内存

fmt.Println(len(string(rune(‘好’))))unicode

输出的长度是3字符串

fmt.Println(len([]rune(“好的2s”)))string

输出的长度是4it

因此用string存储unicode的话,若是有中文(中文是由3个字节组成io

),按下标是访问不到的,由于你只能获得一个byte。 要想访问中文的话,仍是要用rune切片,这样就能按下标访问。

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年建立。如今已经标准化为RFC 3629。UTF-8用1到4个字节编码Unicode字符。用在网页上能够统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

为何要作UTF-8转码?很大语言直接支持UTF-8,部分语言存储字符串到内存时直接使用 UTF-8编码。UTF-8是一个通用解决方案,一直有人维护。例如Golang语言就直接支持UTF-8。

接下来咱们来看看Golang是怎么处理UTF-8转码,如图

输出:

为何fmt.Println(StrToByte(“國”))输出[11]呢?由先了解到byte到范围是0~256,22283对256取余为11。

在Golang中就是这样使用UTF-8,你是否注意到其中到使用细节呢。

wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258-1

相关文章
相关标签/搜索