Python:pygame.mixer.music 与 Unicode 文件名

0 投票
2 回答
678 浏览
提问于 2025-04-16 07:53

当你尝试用包含Unicode字符的文件名字符串来使用pygame.mixer.music.open()时,似乎总是会出现UnicodeEncodeError的错误:

File "C:\TestPlayer.py", line 43, in <module>
pygame.mixer.music.load(x)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-19: 
ordinal not in range(128)

(为了让你更容易阅读,代码行被分开了)

我用os.path.exists(x)检查了文件x是否存在,结果返回了True。我是不是做错了什么?如果没有,是否可以手动修复pygame的混音器(这是一个.pyd文件)?

我使用的是Python 2.6和Pygame 1.9.1。

我忘了提到我尝试打开的文件是一个mp3文件,但Pygame的网站/维基上说pygame.mixer.music应该可以处理这些文件。实际上,只要文件名只包含ASCII字符,它确实可以工作。

2 个回答

0

你试过

fle = open(filename, 'rb')
pygame.mixer.music.load(fle)

还有

fle = open(filename, 'rb')
pygame.mixer.load(fle.read())

或者你可以试试,我也不知道,类似这样的东西

fle = open(filename, 'rb')
foo = fle.read()
pygame.mixer.load(fle.encode('ascii'))
0

与其传递一个文件名,不如以兼容Unicode的方式打开文件,然后把这个文件对象传给 pygame.mixer.music.load

撰写回答