Utilizzando Python 3.2 in Windows 7 Sto ottenendo il seguente in IDLE:UnicodeEncodeError quando si usa la funzione di compilazione
>>compile('pass', r'c:\temp\工具\module1.py', 'exec')
UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character
Qualcuno può spiegare perché la dichiarazione di compilazione tenta di convertire il nome del file unicode usando MBCS? So che sys.getfilesystemencoding restituisce 'mbcs' in Windows, ma ho pensato che questo non è usato quando vengono forniti nomi di file unicode.
ad esempio:
f = open(r'c:\temp\工具\module1.py')
opere.
Per un test più completo salvare quanto segue in un file codificato utf8 ed eseguirlo utilizzando la versione standard di python.exe 3,2
# -*- coding: utf8 -*-
fname = r'c:\temp\工具\module1.py'
# I do have the a file named fname but you can comment out the following two lines
f = open(fname)
print('ok')
cmp = compile('pass', fname, 'exec')
print(cmp)
uscita:
ok
Traceback (most recent call last):
File "module8.py", line 6, in <module>
cmp = compile('pass', fname, 'exec')
UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval
id character
provato localmente in XP e ottenere un oggetto codice adeguato indietro. Viene eseguito dalla CLI o viene eseguito tramite un file? – monkut
Ho intenzione di indovinare che non è la firma della chiamata il problema, ma il contenuto del file che causa l'errore Unicode. verificare che "module1.py" sia correttamente codificato, con la firma di codifica assegnata. – monkut
@monkut: In Python 3.x, non ci si deve preoccupare della codifica: se nel file sono presenti caratteri UTF-8, verranno visualizzati come caratteri UTF-8. – Makoto