2010-12-01 34 views
0

当您尝试使用含Unicode字符的文件名字符串中使用pygame.mixer.music.open(),它似乎抛出UnicodeEncodeError所有的时间:的Python:pygame.mixer.music和Unicode文件名

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的网站/ wiki国家pygame.mixer.music应该与那些工作。事实上,只要文件名只包含ASCII字符就行。

+0

您是否尝试在传递文件之前解码文件名? – 2010-12-01 17:02:45

+0

我做过了,这似乎也没有工作。 – lvk 2010-12-01 17:07:43

回答

0

不是传递一个文件名,打开一个Unicode兼容的方式将文件和文件对象传递给pygame.mixer.music.load

+0

我尝试使用open()并传递该对象,但它似乎没有工作。我做错了吗? – lvk 2010-12-01 21:52:04

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