Quando si immette "我"
, l'interprete Python ottiene dal terminale una rappresentazione di quel carattere nel set di caratteri locale, che memorizza in una stringa byte per byte a causa dello ""
. Sul mio sistema UTF-8, questo è . Sul tuo, è '\xce\xd2'
perché utilizzi GB2312. Questo spiega il valore della variabile a
.
Quando si entra u"我"
, l'interprete Python non sa che codifica il carattere 我
è in ciò che fa è più o meno lo stesso che per una stringa normale:. Memorizza il byte del carattere di una stringa Unicode, interpretando ogni byte come un punto di codice Unicode, quindi il risultato sbagliato u'\xce\xd2'
(o, sulla mia scatola, u'\xe6\x88\x91'
).
Questo problema esiste solo nell'interprete interattivo. Quando si scrivono script o moduli Python, è possibile inserire specify the encoding nella parte superiore e le stringhe Unicode verranno visualizzate correttamente. Per esempio, sul mio sistema, la seguente stampa la parola liberté due volte:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u"liberté")
print("liberté")
fonte
2012-04-23 09:05:06
Quale terminale stai usando? Non riesco a riprodurre i risultati sul mio Unicode gnome-terminal ('c === u '\ u6211'') –
@ChrisMorgan I testare questi codici in IDLE. –
può anche riprodurlo con IDLE –