解码十六进制 UTF-8 字符

Max*_*kyi 2 python encoding utf-8 character-encoding

我有 Apache 生成的以下错误代码:

\xed\xe5 \xff\xb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec
Run Code Online (Sandbox Code Playgroud)

我发现\x转义序列表明以下两个字符是 UTF 十六进制符号。例如,该单词HELLO可以编码为\x48\x45\x4C\x4C\x4F。但我似乎不知道如何解码我拥有的字符串?我已经搜索了 UTF 编码表,但没有找到任何与我拥有的编码符号相匹配的字符。我什至不知道我应该寻找 1 字节还是 2 字节编码。

我使用的是俄语语言环境的电脑,如果有帮助的话。

geo*_*org 5

看起来你的字符串是 cp-1251 编码的:

\n\n
s.decode(\'string_escape\').decode(\'cp1251\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

打印一些看起来有意义的东西(除了\\xb不正确 - 复制粘贴错误?):

\n\n
s = r\'\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed\\xe8\\xe5\\xec\'\n\ns = s.decode(\'string_escape\').decode(\'cp1251\')\n#\xd0\xbd\xd0\xb5 \xd1\x8f?xb\xd1\x8f\xd0\xb5\xd1\x82\xd1\x81\xd1\x8f \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5\xd0\xbc\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

我什至不知道我应该寻找 1 字节还是 2 字节编码。

\n
\n\n

这就是chardet来拯救的地方:

\n\n
import chardet\n\ns = r\'\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed\\xe8\\xe5\\xec\'\n\nprint chardet.detect(s.decode(\'string_escape\'))\n# {\'confidence\': 0.99, \'encoding\': \'windows-1251\'}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果你不懂python,你也可以使用javascript,例如http://jsfiddle.net/L3Z4b/

\n