在python中将unicode字符转换为utf-8

时间:2014-08-27 03:51:51

标签: python unicode utf-8

有人可以告诉我如何在python中将unicode字符转换为utf-8吗?

例如:

输入 - अअघꗄ

输出 - E0A485 E0A485 E0A498 EA9784

我在python控制台中尝试了以下方法:

  
    

蟒提示符>>> character ="अ"

         

蟒提示符>>>字符

         

蟒提示符>>> ' \ xe0 \ XA4 \ X85'

  

在上面的示例中,如果我只是打印变量" character"在控制台中,我会得到' \ xe0 \ xa4 \ x85'作为输出。但我需要E0A485形式的输出。简而言之,我得到的输出是' \ xe0 \ xa4 \ x85'有3' \ x'转义字符。我怎样才能摆脱这些' \ x?s?所以我的输出只是e0a485或E0A485

2 个答案:

答案 0 :(得分:1)

只需在你的unicode字符串上调用encode(),然后hexlify()就可以了。

s = u'\u0905 \u0905 \u0918 \ua5c4'
print s
अ अ घ ꗄ
s_utf8 = s.encode('utf8')
print s_utf8
अ अ घ ꗄ
>>> s_utf8
'\xe0\xa4\x85 \xe0\xa4\x85 \xe0\xa4\x98 \xea\x97\x84'
>>> from binascii import hexlify
>>> hexlify(s_utf8)
>>> 'e0a48520e0a48520e0a49820ea9784'

如果要保留空格,可以这样做:

>>> ' '.join(hexlify(c) for c in s_utf8.split())
'e0a485 e0a485 e0a498 ea9784'
>>> b' '.join(hexlify(c) for c in s_utf8.split())    # Python 3
b'e0a485 e0a485 e0a498 ea9784'

或者一气呵成:

>>> s
u'\u0905 \u0905 \u0918 \ua5c4'
>>> ' '.join(hexlify(c.encode('utf8')) for c in s.split())
'e0a485 e0a485 e0a498 ea9784'
>>> b' '.join(hexlify(c.encode('utf8')) for c in s.split())    # Python 3
b'e0a485 e0a485 e0a498 ea9784'

您可以在结果字符串上调用upper()以生成'E0A485 E0A485 E0A498 EA9784'

答案 1 :(得分:-1)

你可以使用带有backslashreplace标志的encode,如下所示:

>>> character.encode('ascii', 'backslashreplace')
b'\\u0905 \\u0905 \\u0918 \\ua5c4'

如果你想要大写的话,你总是可以添加.upper()。