我错误地解码了utf8字符-šđžčć

时间:2018-06-25 16:43:43

标签: go utf

我有一个包含某些字符的单词-šđžčć。当我从单词中取出第一个字母时,我会得到一个byte,当我将该byte转换为字符串时,会得到解码错误的字符串。 有人可以帮我弄清楚如何正确解码提取字母。 这是示例代码:

package main

import (
    "fmt"
)

func main() {
    word := "ŠKOLA"
    c := word[0]

    fmt.Println(word, string(c)) // ŠKOLA Å
}

https://play.golang.org/p/6T2FX4vN3-U

1 个答案:

答案 0 :(得分:5)

Š多于一个字节。索引符文的一种方法是将字符串转换为[]rune

c := []rune(word)[0]

https://play.golang.org/p/NBUopxe-ik1

您还可以使用utf8包中提供的功能,例如utf8.DecodeRuneutf8.DecodeRuneInString来遍历utf8字符串中的各个代码点。

r, _ := utf8.DecodeRuneInString(word)
fmt.Println(word, string(r))