将 \x 转义字符串转换为 UTF-8 [重复]

Posted

技术标签:

【中文标题】将 \\x 转义字符串转换为 UTF-8 [重复]【英文标题】:Converting \x escaped string to UTF-8 [duplicate]将 \x 转义字符串转换为 UTF-8 [重复] 【发布时间】:2013-08-09 18:47:27 【问题描述】:

如何将看起来像 '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' 的字符串转换为 Perl 或 Python 可读的字符串?

【问题讨论】:

Из файла читаю, error_log Апача @alecxe,我替换了这个词。谢谢。 @synapse, тогда 编解码器和字符串转义。 ответ ниже. 不是重复的,因为他/她也要求在 python 中进行转换在 perl 中评估转义序列并不能回答这个问题 【参考方案1】:

在 python 2.7 中

>>> print '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
привет

>>> print '\\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb2\\xd0\\xb5\\xd1\\x82'.decode('string-escape')
привет
>>> print r'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('string-escape')
привет

在 python 3.x 中

>>> br'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('unicode-escape').encode('latin1').decode('utf-8')
'привет'

【讨论】:

>>> print '\xd0\xb6\xd0\xbe\xd0\xbf\xd0\xb0' жопа @eri,你是对的。谢谢。 我建议@synapse 有 r'\xd0\xb6\xd0\xbe\xd0\xbf\xd0\xb0',即带有斜杠的字符串。 @eri,我故意使用 '\\' 而不是原始字符串,因为这个问题不是 Python 独有的问题。 @falsetru 顺便说一句,这是俄语中相当粗鲁的词:)【参考方案2】:

对于文件读取,您可以使用它而不是 open():

import codecs
with codecs.open('filename','r','string-escape') as f:
    data=f.read()

data 将在读取f 时重新编码。

【讨论】:

以上是关于将 \x 转义字符串转换为 UTF-8 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.7:如何将字符串中的 unicode 转义转换为实际的 utf-8 字符

阻碍 Python 将 JSON 数据转换为转义的特殊字符时出现 Python UnicodeDecodeError [重复]

PHP:恢复转义的Unicode字符[重复]

Python:编码与解码和转义字符

是否可以将字节解码为 UTF-8,将错误转换为 Rust 中的转义序列?

在 Python 中将 Unicode URL 转换为 ASCII(UTF-8 百分比转义)的最佳方法?