如何纠正错误编码的字符串?

0 投票
2 回答
715 浏览
提问于 2025-04-15 18:49

我使用了 mutagen 来读取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(中文编码)。

当你孤单你会想起谁

2 个回答

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.x 中也应该没问题。

4

看起来这个字符串在解码的时候用了错误的编码方式(latin-1)。

你需要先把它编码成字节字符串,然后再用正确的编码方式解码回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')
当你孤单你会想起谁

撰写回答