我有一个包含以下文本的字符串。

\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2

这不是文字。在字符串中,它存储为像['\','x','D','0','\','x','A','4',...]这样的单独字符

如何将此字符串转换为普通字符?

最佳答案

Go接受十六进制rune literals

因此,您可以将输入内容用作常规字符串:

fmt.Println("\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2")
Федоров

Playground示例。

如果您以实际的字符串["\" "x" "D" "0" ...]开头,则需要将各个4字节序列转换为字符。
一种肮脏的方式是:
s := `\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2`
s2, _ := hex.DecodeString(strings.Replace(s, "\\x", "", -1))
fmt.Printf("%s", s2)

Playground示例。

编辑以回答编辑后的问题。

关于string - Golang rune 字符串或如何转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48020373/

10-11 16:26