Golang:如何从C正确解析UTF-8字符串

时间:2015-09-30 16:02:12

标签: c utf-8 go

我是go go world的新手,所以也许这很明显。

我有一个Go功能,我使用go build -buildmode=c-shared和相应的//export funcName注释向C展示。 (你可以在这里看到:https://github.com/udl/bmatch/blob/master/ext/levenshtein.go#L42

我的转换目前的工作原理如下:

func distance(s1in, s2in *C.char) int {
    s1 := C.GoString(s1in)
    s2 := C.GoString(s2in)

我如何在这里处理UTF-8输入? 我已经看到有一个UTF-8包,但我不太清楚它是如何工作的。 https://golang.org/pkg/unicode/utf8/

谢谢!

1 个答案:

答案 0 :(得分:4)

你不需要做任何特别的事情。 UTF-8是Go" native"字符编码,因此您可以使用您提到的utf8包中的功能,例如utf8.RuneCountInString获取字符串中的Unicode符文数。请记住,len(s)仍将返回字符串中的字节数。

有关详细信息,请参阅this post in the official blogthis article