如何在Go结构中存储unicode(golang)

时间:2015-03-19 13:14:20

标签: go

我在golang中读取unicode名称。我的结构项是字符串类型,但我认为这不正确。

是否有一个如何在golang结构中正确存储unicode字符串的示例?

当我使用csv.NewReader读取CSV文档并将其打印到屏幕时,它工作正常,但一旦在结构中作为字符串,它就不再正确打印。这似乎是一个简单的字节/字符串问题,但我很难解决它。

我尝试在结构中使用[]字节,但是我如何比较字符串laters以及将[]字节正确打印到文件的方式是什么?由于我将文件写为RDF,我怀疑我需要转换为UTF-8或其他东西吗?

2 个答案:

答案 0 :(得分:3)

Go期望字符串数据被编码为UTF-8。如果输入数据使用不同的编码,则需要在将其分配给字符串之前将其转换为UTF-8。

您可以手动执行此操作,也可以使用go-charset

等第三方库

答案 1 :(得分:3)

这取决于你的意思" unicode"。 Go中的所有内容都应该是UTF-8,包括string数据类型,因此您可能无需做任何事情(只要您处理UTF-8)。

[]byte只是一系列字节。它对其中的数据不透明。您不需要做任何特殊操作就可以将其写入文件。

stdlib包含unicodeunicode/utf8unicode/utf16个包。如果您需要,还有一个规范化软件包:http://godoc.org/golang.org/x/text/unicode/norm

此博客文章可以比我们在此处回答的更深入地解释它,并且有一些指向更多资源的链接:http://blog.golang.org/strings