我尝试在 Go 中获取字符串字符的 unicode 值作为 Int 值。我这样做:value = strconv.Itoa(int(([]byte(char))[0]))其中 char 包含一个带有一个字符的字符串。这适用于许多情况。它不适用于 ä, ö, ü, Ä, Ö, Ü 等元音变音。例如 Ä 的结果是 65,这与 A 的结果相同。我怎样才能做到这一点?补充:我有两个问题。第一个是通过以下任何答案解决的。第二个有点棘手。我的输入不是 Go 规范化的 UTF-8 代码,例如变音符号由两个字符而不是一个字符表示。正如ANisus所说,解决方案可以在golang.org/x/text/unicode/norm包中找到。上面的行现在是两行:rune, _ := utf8.DecodeRune(norm.NFC.Bytes([]byte(char)))value = strconv.Itoa(int(rune)) 任何使这个更短的提示都受欢迎......
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
Go 中的“字符”类型是 ,rune它是 的别名int32,另见Rune 文字。Arune是标识 Unicode 代码点的整数值。
在 Go 中,strings 被表示和存储为文本的 UTF-8 编码字节序列。循环的range形式for遍历rune文本的s:
s := "äöüÄÖÜ世界"
for _, r := range s {
fmt.Printf("%c - %d\n", r, r)
}
输出:
ä - 228
ö - 246
ü - 252
Ä - 196
Ö - 214
Ü - 220
世 - 19990
界 - 30028
在Go Playground上试一试。
如果您想了解有关该主题的更多信息,请阅读此博客文章:
Go 中的字符串、字节、符文和字符
- 3 回答
- 0 关注
- 522 浏览
添加回答
举报
0/150
提交
取消