2015-03-25 169 views
8

因此,將[]byte解碼爲[]rune(簡單地轉換爲string,然後轉換爲[]rune可以很好地工作,我假設它默認爲utf8並且填充字節爲invalids),這非常容易。我的問題是 - 你認爲如何將這個[]rune以utf8的形式解碼回[]byte在golang中如何使用utf8將[]符號編碼爲[]字節?

我是否錯過了某些東西或者我是否已經手動爲我的[]rune中的每個符文手動呼叫EncodeRune?當然有一個編碼器,我可以簡單地通過Writer

+0

請參閱[The Go博客:Go中的字符串,字節,符文和字符](https://blog.golang.org/strings)。 – 2015-03-25 12:35:35

+1

@DaveC我讀過這個文檔至少5次,沒有找到我要找的東西。 – 2015-03-25 12:36:53

+2

然後一個更基本的來源:https://golang.org/ref/spec#Conversions_to_and_from_a_string_type結合該列表中的#3和#4。 – 2015-03-25 12:39:37

回答

19

你可以簡單地將符文切片([]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:

轉換一個一串符文產生一個串聯的字符串個別符文值轉換爲字符串。

+2

啊,所以我錯過了一些東西,它對我來說非常有意義'字符串<-> []字節',但我沒有從'[] rune - > string - > [] byte'跳轉 – 2015-03-25 12:37:54

相關問題