如何纠正misencoded字符串?
题
我用诱变剂以读取的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为好。
不隶属于 StackOverflow