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

Golang: How to correctly parse UTF-8 string from C

我是围棋新手,所以也许这很明显。

我有一个Go函数,要使用go build -buildmode=c-shared和相应的//export funcName注释将其公开给C。
(您可以在这里看到它:https://github.com/udl/bmatch/blob/master/ext/levenshtein.go#L42)

我的转换当前的工作方式如下:

1
2
3
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/

谢谢!


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

有关某些详细信息,请参见官方博客或本文中的这篇文章。