I am running an executable from Go via os.Exec, which gives me the following output: (\\xe2\\x96\\xb2). The output contains a UTF-8 byte string, which I want to convert to the corresponding Unicode codepoint (U+25B2). What I am expecting to see, or trying to convert to is: "(▲)".
I have looked at this entry in the Go Blog (https://blog.golang.org/strings), but it starts out with an Interpreted string literal, whereas the command output seems to be a Raw string literal. I have tried strconv.Quote and strconv.Unquote, which does not achieve what I'm looking for.
在Go中将带有UTF-8字节字符串的命令行输出转换为Unicode代码点
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
douyong4623 2019-04-10 21:30关注You can use the
strconvpackage to parse the string literal containing the escape sequences.The quick and dirty way is to simply add the missing quotes and interpret it as a quoted string using
strconv.Unquotes := `\xe2\x96\xb2` s, err := strconv.Unquote(`"` + s + `"`)You can also directly parse the string one character at a time (which is what
Unquotedoes internally), usingstrconv.UnquoteChars := `\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)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报