0

有没有简单的方法将包含 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'},
]
4

1 回答 1

1

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

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

要将 unicode 转换为 str,需要指定规则(哪些字节代表特定的 unicode 点)。此规则称为编码。因此,要将 unicode 转换为 str,使用utf8编码,您需要使用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 字符串和编码的一个很好的介绍

于 2013-05-09T08:26:44.107 回答