UnicodeDecodeError:解析 Midi 文件时出现 Utf-8 解码错误

Posted

技术标签:

【中文标题】UnicodeDecodeError:解析 Midi 文件时出现 Utf-8 解码错误【英文标题】:UnicodeDecodeError: Utf-8 Decode Error while parsing Midi File 【发布时间】:2020-11-14 07:18:04 【问题描述】:

我尝试使用 music21 解析一些音乐文件,但代码生成 utf-8 错误:

'utf-8' codec can't decode byte 0xe9 in position 3: invalid continuation byte

这是我的代码:

notes = []
for file in glob.glob("midi_songs/*.mid"):
print("parsing %s"%file)
midi = converter.parse(file)

elements_to_parse = midi.flat.notes
for ele in elements_to_parse:
    #Note: Store Pitch
    if isinstance(ele, note.Note):
        notes.append(str(ele.pitch))


    #Chorde: Split note and join
    elif isinstance(ele, chord.Chord):
        notes.append("+".join(str(n) for n in ele.normalOrder))

追溯

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-17-ca5986c7b6d6> in <module>
      2 for file in glob.glob("midi_songs/*.mid"):
      3     print("parsing %s"%file)
----> 4     midi = converter.parse(file)
      5 
      6     elements_to_parse = midi.flat.notes

【问题讨论】:

你能检查一下你的代码的缩进吗? 尝试将您的编码更改为 ISO-8859-1 之类的编码,因为它支持大多数符号和字符 看起来像 music21 中的错误。 【参考方案1】:

这是 music21 6.1.0 中的回归,已在 6.3.0 中修复

我们发现的每个有问题的文件在曲目名称消息中都有一个版权符号,并且由 www.piano-midi.de 编写。

【讨论】:

以上是关于UnicodeDecodeError:解析 Midi 文件时出现 Utf-8 解码错误的主要内容,如果未能解决你的问题,请参考以下文章

python-使用pip安装第三方库报UnicodeDecodeError: 'utf8' codec can't decode byte 0xcb in position 7

解析文件格式采用chardet库

Python泡菜错误:UnicodeDecodeError

UnicodeDecodeError,无效的继续字节

python2 当中 遇到 UnicodeDecodeError UnicodeDecodeError: 'ascii' codec can't decode byte 0xe

如何解决 UnicodeDecodeError?