我有一个包含某些字符的单词-šđžčć。当我从单词中取出第一个字母时,我会得到一个byte
,当我将该byte
转换为字符串时,会得到解码错误的字符串。
有人可以帮我弄清楚如何正确解码提取字母。
这是示例代码:
package main
import (
"fmt"
)
func main() {
word := "ŠKOLA"
c := word[0]
fmt.Println(word, string(c)) // ŠKOLA Å
}
答案 0 :(得分:5)
Š
多于一个字节。索引符文的一种方法是将字符串转换为[]rune
c := []rune(word)[0]
https://play.golang.org/p/NBUopxe-ik1
您还可以使用utf8
包中提供的功能,例如utf8.DecodeRune
和utf8.DecodeRuneInString
来遍历utf8字符串中的各个代码点。
r, _ := utf8.DecodeRuneInString(word)
fmt.Println(word, string(r))