在golang中如何使用utf8将[]符号编码为[]字节?

问题描述:

因此,将[]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

你可以简单地将符文切片([]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