我正在通过os.Exec从Go运行可执行文件,它为我提供以下输出:(\\xe2\\x96\\xb2)
。输出包含一个UTF-8字节字符串,我想将其转换为相应的Unicode代码点(U + 25B2)。我期望看到或尝试转换为的是:“(▲)”。
我已经在Go Blog(https://blog.golang.org/strings)中查看了该条目,但是它以Interpreted字符串文字开始,而命令输出似乎是Raw字符串文字。我尝试过strconv.Quote
和strconv.Unquote
,但并没有达到我想要的目的。
答案 0 :(得分:0)
您可以使用strconv
包来解析包含转义序列的字符串文字。
一种快速而肮脏的方法是简单地添加缺少的引号,并使用strconv.Unquote
将其解释为带引号的字符串
s := `\xe2\x96\xb2`
s, err := strconv.Unquote(`"` + s + `"`)
您还可以使用strconv.UnquoteChar
Unquote
内部进行此操作)。
s := `\xe2\x96\xb2`
buf := make([]byte, 0, 3*len(s)/2)
for len(s) > 0 {
c, _, ss, err := strconv.UnquoteChar(s, 0)
if err != nil {
log.Fatal(err)
}
s = ss
buf = append(buf, byte(c))
}
s = string(buf)