如何将包含unicode键或值的dict列表对象编码到utf8?

时间:2013-05-09 07:58:10

标签: python unicode utf-8

有没有简单的方法将包含unicode字符串的对象转换为utf8?

例如:

before = [ 
    u'labelset': {u'labelset_id': 80L, u'labelset_name': u'\u6d17\u8863\u6a5f'},
    u'labelset': {u'labelset_id': 81L, u'labelset_name': u'\u6d17\u8863\u6a5f'},
    u'labelset': {u'labelset_id': 82L, u'labelset_name': u'\u6d17\u8863\u6a5f'},
]

after = [
    'labelset': {labelset_id: 80L, labelset_name: 'test'},
    'labelset': {labelset_id: 81L, labelset_name: 'test'},
    'labelset': {labelset_id: 81L, labelset_name: 'test'},
]

1 个答案:

答案 0 :(得分:1)

在python 2中。*有两种类型的字符串:

str (sequence of bytes)
unicode (sequence of unicode code points)

要将unicode转换为str,需要指定规则(哪些字节代表特定的unicode点)。此规则称为编码。因此,要使用utf8编码将unicode转换为str,您需要使用encode方法:

>>> u'\u6d17\u8863\u6a5f'.encode('utf8')
'\xe6\xb4\x97\xe8\xa1\xa3\xe6\xa9\x9f'

结果将是一个字节序列,可以保存到例如文本文件中。

要将str转换为unicode,您需要知道在从unicode到str的转换过程中应用了哪些规则。在目前的情况下,此规则为utf8编码。为此,请使用decode方法:

>>> '\xe6\xb4\x97\xe8\xa1\xa3\xe6\xa9\x9f'.decode('utf8')
u'\u6d17\u8863\u6a5f'

这是关于python字符串和编码的好presentation