【发布时间】:2019-09-06 01:59:28
【问题描述】:
我正在尝试使用 Go 打印从 JSON 文件加载的 Unicode 表情符号字符。
当我加载和解组我的文件时,传递给fmt.Println 的结构字段只打印转义的字符串序列。
例如,一个字符串作为{…"Unicode":"\\U0001f47f"} 存储在文件中,打印它会产生\U0001f417 而不是表情符号字符。
调用fmt.Printf("%q", str) 产生\\U0001f417。我无法找到解决方案,我有点难过。我试图删除转义序列并将其连接到模板字符串中,但它没有影响。我也尝试使用字符串缓冲区,但也没有用。
【问题讨论】:
-
"\\U0001f417"之类的东西不是代码点,而是您需要解析才能找到代码点的字符串。不幸的是,stdlib strconv.Unquote 中的默认函数不能直接应用,因为它 a) 需要额外的引号和 b) 小写u。所以:去掉任何不是数字和前导零的东西,解析十六进制数字并使用 fmt.Printf 的 %c 动词格式化该代码点。 -
啊,这是一个很棒的专业提示。感谢您的贡献!
标签: json string go unicode emoji