2015-12-28 18 views
5

Ho appena scaricato l'ultimo Python 2.7.11 64 bit dal suo sito Web ufficiale e l'ho installato sul mio Windows 10. E ho scoperto che se il nuovo file IDLE contiene caratteri cinesi, come 你好, non posso salvare il file. Se provassi a salvarlo per diverse volte, il nuovo file andò in crash e sparì.Perché non riesco a salvare il file con caratteri cinesi quando si utilizza Python 2.7.11 IDLE?

Ho anche installato l'ultimo python-3.5.1-amd64.exe e non presenta questo problema.

Come risolverlo?

Più: Un codice esempio dalla pagina wiki, https://zh.wikipedia.org/wiki/%E9%B8%AD%E5%AD%90%E7%B1%BB%E5%9E%8B

Se ho passato il codice qui, alays StackOverflow mi avvertono: corpo non può contenere "Ho appena dow". Perché?

Grazie!

enter image description here

Più: Trovo questa opzione di configurazione, ma non aiuta affatto. IDLE -> Opzioni -> Configura IDLE -> Generale -> Codifica Origine predefinita: UTF-8

Più: Aggiungendo u prima del codice cinese, tutto sarà giusto, è ottimo modo. Come di seguito: enter image description here

Senza u ci, a volte andrà con il codice danneggiato. Come sotto: enter image description here

+0

Fornire un codice di esempio funzionante minimo. –

risposta

2

Python 2.x utilizza ASCII come codifica predefinita, mentre Python 3.x utilizza UTF-8. Basta usare:
my_string.encode("utf-8")
per convertire ascii a utf-8 (o modificare a qualsiasi altra codifica è necessario)

Si può anche provare a mettere questa riga nella prima riga del codice:

# -*- coding: utf-8 -*- 
+0

L'ultimo modo in cui hai parlato funziona! –

2

Python 2 utilizza ASCII come codifica predefinita per le stringhe che non possono memorizzare caratteri cinesi. D'altra parte, Python 3 usa la codifica Unicode per le sue stringhe di default che può memorizzare caratteri cinesi.

Ma ciò non significa che Python 2 non possa utilizzare le stringhe Unicode. Devi solo codificare le tue stringhe in Unicode. Ecco un esempio di conversione delle stringhe in stringhe Unicode.

>>> plain_text = "Plain text" 
>>> plain_text 
'Plain text' 
>>> utf8_text = unicode(plain_text, "utf-8") 
>>> utf8_txt 
u'Plain_text' 

Il prefisso u nella stringa, utf8_txt, dice che si tratta di una stringa Unicode.

Si potrebbe anche fare questo.

>>> print u"你好" 
>>> 你好 

Devi solo anteporre la stringa con u per indicare che si tratta di una stringa Unicode.

+0

Aggiungere 'u' è fantastico! –

0

Quando si usa Python 2 su Windows:

  1. Per file con caratteri Unicode per essere salvati in IDLE, una linea

    # -*- coding: utf-8 -*- 
    

    deve essere aggiunto nel suo inizio.

  2. E per i caratteri Unicode per mostrare in modo corretto in uscita della console in Windows, se in esecuzione uno script, salvato in un file, in consolle IDLE o in Windows shell, le stringhe devono essere prefissati con u:

    print u"你好" 
    print u"Привет" 
    

    Ma in modalità interattiva, ho scoperto di non aver bisogno di questo con il cirillico.