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

相關文章
相關標籤/搜索