因此,將[]byte
解碼爲[]rune
(簡單地轉換爲string
,然後轉換爲[]rune
可以很好地工作,我假設它默認爲utf8並且填充字節爲invalids),這非常容易。我的問題是 - 你認爲如何將這個[]rune
以utf8的形式解碼回[]byte
?在golang中如何使用utf8將[]符號編碼爲[]字節?
我是否錯過了某些東西或者我是否已經手動爲我的[]rune
中的每個符文手動呼叫EncodeRune?當然有一個編碼器,我可以簡單地通過Writer
。
因此,將[]byte
解碼爲[]rune
(簡單地轉換爲string
,然後轉換爲[]rune
可以很好地工作,我假設它默認爲utf8並且填充字節爲invalids),這非常容易。我的問題是 - 你認爲如何將這個[]rune
以utf8的形式解碼回[]byte
?在golang中如何使用utf8將[]符號編碼爲[]字節?
我是否錯過了某些東西或者我是否已經手動爲我的[]rune
中的每個符文手動呼叫EncodeRune?當然有一個編碼器,我可以簡單地通過Writer
。
你可以簡單地將符文切片([]rune
)轉換爲string
,您可以將其轉換回[]byte
。
實施例:
rs := []rune{'H', 'e', 'l', 'l', 'o', ' ', '世', '界'}
bs := []byte(string(rs))
fmt.Printf("%s\n", bs)
fmt.Println(string(bs))
輸出(嘗試在Go Playground):
Hello 世界
Hello 世界
的Go Specification: Conversions提到這種情況下明確地:Conversions to and from a string type,點#3:
轉換一個一串符文產生一個串聯的字符串個別符文值轉換爲字符串。
啊,所以我錯過了一些東西,它對我來說非常有意義'字符串<-> []字節',但我沒有從'[] rune - > string - > [] byte'跳轉 – 2015-03-25 12:37:54
請參閱[The Go博客:Go中的字符串,字節,符文和字符](https://blog.golang.org/strings)。 – 2015-03-25 12:35:35
@DaveC我讀過這個文檔至少5次,沒有找到我要找的東西。 – 2015-03-25 12:36:53
然後一個更基本的來源:https://golang.org/ref/spec#Conversions_to_and_from_a_string_type結合該列表中的#3和#4。 – 2015-03-25 12:39:37