json - 从文件加载的 Unicode 文字打印表情符号

标签 json string go unicode emoji

我正在尝试使用 Go 打印从 JSON 文件加载的 Unicode 表情符号字符。 当我加载和解码我的文件时,传递给 fmt.Println 的结构字段仅打印转义字符串序列。

例如,一个字符串在文件中存储为 {..."Unicode":"\\U0001f47f"} 并且打印它会产生 \U0001f417 而不是表情符号特点。 调用 fmt.Printf("%q", str) 产生 \\U0001f417。我找不到解决方案,我有点难过。我试图删除转义序列并将其连接到模板字符串中,但没有任何影响。我还尝试使用字符串缓冲区,但它也没有用。

最佳答案

使用以下函数将格式为 \Uxxxxxxxx 的 rune 转换为实际的 rune :

func unquoteCodePoint(s string) (rune, error) {
    // 16 specifies hex encoding
    // 32 is size in bits of the rune type
    r, err := strconv.ParseInt(strings.TrimPrefix(s, "\\U"), 16, 32)
    return rune(r), err
}

一种变体是转换为字符串而不是 rune :

func unquoteCodePoint(s string) (string, error) {
    r, err := strconv.ParseInt(strings.TrimPrefix(s, "\\U"), 16, 32)
    return string(r), err
}

像这样使用字符串版本:

s, err := unquoteCodePoint("\\U0001f47f")
if err != nil {
    // handle error
}
fmt.Printf("%s\n", s) // prints  👿

关于json - 从文件加载的 Unicode 文字打印表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55700149/

相关文章:

go - 将我的 HTML 链接到 Go Lang

python - 压平深度嵌套的 JSON 以获取 Dataframe 的最快且通用的方法是什么?

javascript - 为什么逗号不能出现在 Javascript 对象键中?

python - string.decode() 与 unicode(string)

java - 在java中从扫描仪读取输入到字符串数组

testing - 如何在 Go 中测试 os.exit 场景

javascript - 预期数组但收到...(JSON)... AngularJS 错误

javascript - 如何删除嵌套的 JSON.stringify() 属性

python - 在 Python 中提取跨多行的引号之间的字符串

json - 使用 golang 解析 CSV 文件中的嵌套 JSON 对象