在golang中如何使用utf8将[]符号编码为[]字节?
问题描述:
因此,将[]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:
转换一个一串符文产生一个串联的字符串个别符文值转换为字符串。
+2
啊,所以我错过了一些东西,它对我来说非常有意义'字符串 []字节',但我没有从'[] 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