Как преобразовать литерал utf8 (то есть '\ u1F606') в руну?(НЕ ПОЛУЧИТЕ UTF8 ОТ РУНЫ!) - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь генерировать последовательные символы, используя шестнадцатеричные коды utf8.Например, первая часть, я называю «базовый» код: 259, вторая часть, я называю «конечный» код: 1 (или, 2, или, или F, и т. Д.)

Они поступают вкак строки.Как только я добавляю код конца и получаю полную строку (то есть: 259E), как я могу преобразовать это в фактическое представление utf8 (или «символ»)

Я не уверен, с чего начать.Я знаю, что string(rune('\u259E') даст мне представление (▞), но я не знаю, как получить строку в руне в виде (одинарных кавычек) кода utf8.

package main

import "fmt"

func main() {
    s1 := "259"
    s2 := "E"
    s3 := "\\u"+s1+s2
    fmt.Println(s3)
    fmt.Println(string(rune('\u259E'))) 
}

Желаемый результат заключается в том, что я могу вернуть символ utf8 (и, возможно, суррогатные пары) из сгенерированных строковых представлений кодов.

Общая суть (например) заключается в том, что я хотел бы получить строковое значение«272A» для возврата как: 101

1 Ответ

1 голос
/ 25 июня 2019

Разобрать шестнадцатеричное значение в int32.

Затем приведите это значение к rune в println.

package main

import "fmt"
import "strconv"

func main() {
    s1 := "259"
    s2 := "E"
    s3, err := strconv.ParseInt(s1+s2, 16, 32)
    fmt.Println(string(rune(s3)))
    fmt.Println(err)
}
.
...