0

我使用诱变剂读取 mp3 元数据,因为 id3 标签是作为 unicode 读入的,但实际上它是 GBK 编码的。如何在python中纠正这个问题?

audio = EasyID3(name)
title = audio["title"][0] 
print title
print repr(title)

生产

µ±Äã¹Âµ¥Äã»áÏëÆðË­
u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'

但实际上应该是GBK(中文)。

当你孤单你会想起谁
4

2 回答 2

4

看起来该字符串已使用错误的编码 (latin-1) 解码为 un​​icode。

您需要将其编码为字节字符串,然后使用正确的编码将其解码回 unicode。

title = u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'
print title.encode('latin-1').decode('gbk')
当你孤单你会想起谁
于 2010-02-03T09:46:12.490 回答
2

看起来它是使用latin1. 修理:

>>> title = u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'
>>> print title.encode('latin1').decode('GBK')
当你孤单你会想起谁

在 Python 2.x 中测试,但在 3 中也应该可以正常工作。

于 2010-02-03T09:41:25.963 回答