我现在正在学习python和PyGTK,并创建了一个简单的音乐组织者. http://pastebin.com/m2b596852 但是当它用挪威字母æ,ø和å编辑歌曲时,它只是将它们变成一个奇怪的角色.
那么有没有什么好方法可以将名称打开或编码为utf-8字符?
从文件中读取信息:
def __parse(self, filename): "parse ID3v1.0 tags from MP3 file" self.clear() self['artist'] = 'Unknown' self['title'] = 'Unknown' try: fsock = open(filename, "rb", 0) try: fsock.seek(-128, 2) tagdata = fsock.read(128) finally: fsock.close() if tagdata[:3] == 'TAG': for tag, (start, end, parseFunc) in self.tagDataMap.items(): self[tag] = parseFunc(tagdata[start:end]) except IOError: pass
打印到sys.stdout信息:
for info in files: try: os.rename(info['name'], os.path.join(self.dir, info['artist'])+' - '+info['title']+'.mp3') print 'From: '+ info['name'].replace(os.path.join(self.dir, ''), '') print 'To: '+ info['artist'] +' - '+info['title']+'.mp3' print self.progressbar.set_fraction(i/num) self.progressbar.set_text('File %d of %d' % (i, num)) i += 1 except IOError: print 'Rename fail'
Jarret Hardi.. 8
你想首先解码输入FROM它在TO utf-8中的字符集(在Python中,编码意味着"从unicode/utf-8转到其他一些字符集").
一些谷歌搜索表明,挪威的字符集是普通的'iso-8859-1'...我希望如果我在这个细节上错了,有人可以纠正我.无论如何,无论以下示例中的charset名称如何:
tagdata[start:end].decode('iso-8859-1')
在真实世界的应用程序中,我意识到您不能保证输入是挪威语或任何其他字符集.在这种情况下,您可能希望继续浏览一系列可能的字符集,以查看哪些可以成功转换.SO和谷歌都有一些关于算法的建议,以便在Python中有效地做到这一点.这听起来比实际上更可怕.
你想首先解码输入FROM它在TO utf-8中的字符集(在Python中,编码意味着"从unicode/utf-8转到其他一些字符集").
一些谷歌搜索表明,挪威的字符集是普通的'iso-8859-1'...我希望如果我在这个细节上错了,有人可以纠正我.无论如何,无论以下示例中的charset名称如何:
tagdata[start:end].decode('iso-8859-1')
在真实世界的应用程序中,我意识到您不能保证输入是挪威语或任何其他字符集.在这种情况下,您可能希望继续浏览一系列可能的字符集,以查看哪些可以成功转换.SO和谷歌都有一些关于算法的建议,以便在Python中有效地做到这一点.这听起来比实际上更可怕.