Python2.7:使用decode unicodescap后返回utf8

2024-10-04 01:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除字符,但有不同的输入(可以是u'ä'或{}等等),所以我使用了encode(utf-8)。decode(unicode-escape)将其转换为相同的格式并清除:

s = "\\u0001" 
s.encode("utf-8")
'\\u0001'
s.encode("utf-8").decode("unicode-escape")
u'\x01'

或者

^{pr2}$

问题是如何在utf-8之后返回? 找到.encode("raw_unicode_escape"),它通过了基本测试,但仍不确定。在


Tags: raw格式unicode字符utfencodedecodex01
2条回答

我不明白为什么(或如何)混合使用字节字符串和Unicode字符串。但是如果你的数据是这样的,那么你需要以不同的方式处理这两种类型的字符串。在

下面的代码首先打印data中每个字符串的表示形式,以及该字符串所属对象的类型。
然后它对纯字节字符串调用decode('unicode-escape')方法,该方法将它们转换为Unicode字符串。
然后将所有字符串从Unicode编码为UTF-8字节字符串。在

data = [
    'byte string',
    u'unicode string',
    'this byte string has unicode escapes: \\u2122\\u00e6',
    u'this unicode string has non-ascii chars: ©æ™ä',
]

for s in data:
    print repr(s), type(s)
    if isinstance(s, str):
        s = s.decode('unicode-escape')
    z = s.encode('utf8')
    print repr(z), z
    print

输出

^{pr2}$

上面的输出是在配置为使用UTF-8的终端中产生的。在

像这样:

>>> s = "\\u0001"
>>> s.decode('unicode-escape')
u'\x01'
>>> s.decode('unicode-escape').encode('utf8')
'\x01'

下面是一个更明显的结果是UTF-8编码的示例:

^{pr2}$

相关问题 更多 >