Я неправильно расшифровал символы utf8 - šđžčć - PullRequest
0 голосов
/ 25 июня 2018

У меня есть слово, которое содержит некоторые из этих символов - šđžčć.Когда я вычту первую букву из этого слова, у меня будет 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 голосов
/ 25 июня 2018

Š - это более одного байта.Один из способов индексирования рун - преобразование строки в []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))
...