python - 解码十六进制 UTF-8 字符

标签 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

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

我在使用俄语语言环境的 PC 上,如果有帮助的话。

最佳答案

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

s.decode('string_escape').decode('cp1251')

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

s = r'\xed\xe5 \xff?xb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec'

s = s.decode('string_escape').decode('cp1251')
#не я?xbяется приложением

I don't even know should I be looking for one byte or 2 bytes encodings.

这是chardet的地方前来救援:

import chardet

s = r'\xed\xe5 \xff?xb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec'

print chardet.detect(s.decode('string_escape'))
# {'confidence': 0.99, 'encoding': 'windows-1251'}

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

关于python - 解码十六进制 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265341/

相关文章:

hadoop - saveAsNewAPIHadoopFile 将字符编码更改为 UTF-8

python - 如何在 Tornado 中删除请求?

python - 限制pycurl中的文本下载内容

python - 如果 xmlcharrefreplace 和 backslashreplace 不起作用,我应该如何解码字节(使用 ASCII)而不丢失任何 "junk"字节?

ruby - 在 Ruby 1.8.7 中使用 string[range]=new_val 同时尊重 UTF8

utf-8 - 如何让 Microsoft 的 AntiXss 库 URLEncode 为 URI 标准(RFC3986)而不是 IRI(RFC3987)?

python - 在 scipy.cluster.hierarchy.linkage() 中使用距离矩阵?

python - 在 Windows 中复制 fork() 的最佳方法是什么?

python - 使用西里尔字母时出现 UnicodeDecodeError

java - EdDSAPublicKey 序列化 Java