2010-12-01 73 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'))