2012-04-25 5 views
5

Possible Duplicate:
Python, Unicode, and the Windows consolePython: emettere una certa stringa UTF-8 per console di Windows

ho letto alcune stringhe da file e quando provo a stampare queste stringhe UTF-8 in console di Windows, ottengo l'errore

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128) 

ho cercato di impostare console-codifica UTF-8 con "65001 chcp" Ma di me di ottenere questo messaggio di errore

LookupError: unknown encoding: cp65001 
+6

Risolto in Python 3.3. –

+1

c'è qualche soluzione per python 2.7? – Meloun

+0

Questa domanda è comparsa un paio di volte. Ecco un esempio di soluzione alternativa che potrebbe funzionare o meno: http://stackoverflow.com/questions/5419/python-unicode-and-the-windows-console –

risposta

3

Ti consiglio di verificare domande simili su StackOverflow, ce ne sono molte.

In ogni caso, si può fare in questo modo:

  1. di lettura da file in qualsiasi codifica (per esempio utf8), ma decodifica stringhe a unicode
  2. per console di Windows, uscita unicode stringhe. Non è necessario codificare in questo caso speciale. Non è necessario impostare la codifica della console, il testo di output verrà codificato correttamente automaticamente.

Per i file, è necessario utilizzare il modulo di codec o codificare nella codifica corretta.

+0

Un buon consiglio, ma occorre notare che se si prevede supporto per più lingue sulla console questo non lo fornirà. –

+0

ha funzionato davvero per te? Ottengo 'LookupError: unknown encoding: cp65001' ancora prima di leggere il primo byte dal file. Sembra totalmente estraneo ai contenuti delle stringhe. È come se a Python mancasse la comprensione di 'cp65001', ma comunque provate in questo modo, e questo non funzionerà mai a meno che non si lavori su di esso o si usi python 3.3, se dovessi indovinare. – n611x007

+1

@naxa Sì, python non capisce cp65001. Non chcp su 65001. O almeno usa 'set PYTHONIOENCODING = utf-8' prima di chiamare python. Vedi anche https://stackoverflow.com/questions/878972/windows-cmd-encoding-change-causes-python-crash – Jiri

1

Il comando di stampa tenta di convertire stringhe Unicode nella codifica supportata dalla console. Prova:

>>> import sys 
>>> sys.stdout.encoding 
'cp852' 

Mostra quale codifica supporta la console (cosa viene detto a Python per essere supportato). Se il carattere non può essere convertito in quella codifica, non c'è modo di visualizzarlo correttamente.

Problemi correlati