我嘗試在 Go 中獲取字符串字符的 unicode 值作為 Int 值。我這樣做:value = strconv.Itoa(int(([]byte(char))[0]))其中 char 包含一個帶有一個字符的字符串。這適用于許多情況。它不適用于 ?, ?, ü, ?, ?, ü 等元音變音。例如 ? 的結果是 65,這與 A 的結果相同。我怎樣才能做到這一點?補充:我有兩個問題。第一個是通過以下任何答案解決的。第二個有點棘手。我的輸入不是 Go 規(guī)范化的 UTF-8 代碼,例如變音符號由兩個字符而不是一個字符表示。正如ANisus所說,解決方案可以在golang.org/x/text/unicode/norm包中找到。上面的行現(xiàn)在是兩行:rune, _ := utf8.DecodeRune(norm.NFC.Bytes([]byte(char)))value = strconv.Itoa(int(rune)) 任何使這個更短的提示都受歡迎......
3 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
Go 中的“字符”類型是 ,rune它是 的別名int32,另見Rune 文字。Arune是標識 Unicode 代碼點的整數(shù)值。
在 Go 中,strings 被表示和存儲為文本的 UTF-8 編碼字節(jié)序列。循環(huán)的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 中的字符串、字節(jié)、符文和字符
- 3 回答
- 0 關注
- 571 瀏覽
添加回答
舉報
0/150
提交
取消