为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 go 中获取字符的 Unicode 值?

如何在 go 中获取字符的 Unicode 值?

Go
慕妹3146593 2021-09-21 22:14:59
我尝试在 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 中的字符串、字节、符文和字符


查看完整回答
反对 回复 2021-09-21
?
潇湘沐

TA贡献1816条经验 获得超6个赞

你可以使用这个unicode/utf8包


rune,_:=utf8.DecodeRuneInString("Ä")

fmt.Println(rune)


查看完整回答
反对 回复 2021-09-21
  • 3 回答
  • 0 关注
  • 522 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信