Python:pygame.mixer.music 和 unicode 文件名

发布于 2024-10-05 20:13:30 字数 564 浏览 4 评论 0原文

当您尝试将 pygame.mixer.music.open() 与包含 Unicode 字符的文件名字符串一起使用时,它似乎总是抛出 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 检查了 x 的存在。存在(x),返回 True。我做错了什么吗?如果没有,是否可以手动修复 pygame 的混合器(这是一个 .pyd 文件)?

我正在使用 Python 2.6 和 Pygame 1.9.1。

我忘记添加我尝试打开的文件是 mp3 文件,但 Pygame 的网站/wiki 指出 pygame.mixer.music 应该适用于这些文件。事实上,只要文件名仅包含 ASCII 字符,就可以。

When you try to use pygame.mixer.music.open() with a filename string containing Unicode characters, it seems to throw a UnicodeEncodeError all the time:

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)

(lines broken for your viewing pleasure)

I checked for x's existance using os.path.exists(x), which returned True. Am I doing something wrong? If not, is it possible to manually fix pygame's mixer (which is a .pyd file)?

I'm using Python 2.6, and Pygame 1.9.1.

I forgot to add the file I tried opening is an mp3 file, but Pygame's website/wiki states pygame.mixer.music should work with those. In fact, it does, as long as the filename only contains ASCII characters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断肠人 2024-10-12 20:13:30

不要传递文件名,而是以 unicode 兼容的方式打开文件并将文件对象传递给 pygame.mixer.music.load

Instead of passing a filename, open the file in a unicode compatible way and pass the file object to pygame.mixer.music.load

梓梦 2024-10-12 20:13:30

你尝试

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'))

You tried

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

and

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

Or you could try, i dont know, something like

fle = open(filename, 'rb')
foo = fle.read()
pygame.mixer.load(fle.encode('ascii'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文