我用诱变剂以读取的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(中国)。

当你孤单你会想起谁
有帮助吗?

解决方案

它看起来像字符串已使用错误的编码(拉丁-1)被解码为Unicode。

您需要将其编码为字节串,然后使用正确的编码它回到解码为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')
当你孤单你会想起谁

其他提示

看起来它的自动解码使用latin1。至FIX:

>>> 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为好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top