Come scrivere i caratteri russi in un file?
-
02-10-2019 - |
Domanda
Nella console quando sto cercando di uscita caratteri russi Mi dà ???????????????
Chi sa perché?
Ho cercato di scrittura per il file - in questo caso la stessa situazione
.per esempio
f=open('tets.txt','w')
f.write('some russian text')
f.close
file interno è - ????????????????????????? /
o
p="some russian text"
print p
?????????????
In Blocco note aggiuntive non mi permette di salvare il file con lettere russe. Io do questo:
Questo file contiene caratteri formato Unicode che sarà perduta se si salva questo file come codificato un ANSI file di testo. Per mantenere l'Unicode informazioni, scegliere Annulla qui sotto e quindi selezionare una delle opzioni Unicode dal menu a tendina Codifica. Continuare?
Come regolare il mio sistema, quindi mi non hanno questo problema.
Soluzione
Ecco un esempio pratico-out, si prega di leggere i commenti:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# The above encoding declaration is required and the file must be saved as UTF-8
from __future__ import with_statement # Not required in Python 2.6 any more
import codecs
p = u"абвгдежзийкл" # note the 'u' prefix
print p # probably won't work on Windows due to a complex issue
with codecs.open("tets.txt", "w", "utf-16") as stream: # or utf-8
stream.write(p + u"\n")
# Now you should have a file called "tets.txt" that can be opened with Notepad or any other editor
Altri suggerimenti
Provare ad aprire il file utilizzando codec, è necessario
import codecs
e quindi
writefile = codecs.open('write.txt', 'w', 'utf-8')
È necessario definire la codifica di file se contiene caratteri non ASCII.
Cosa console stai usando? Le probabilità sono, la console non supporta quella lingua. Assicurarsi che la console supporta Unicode (e che la vostra applicazione sta inviando stringhe Unicode).
Aggiornamento:
Per affrontare l'aggiornamento alla tua domanda per quanto riguarda problemi con Windows' blocco note: Fare clic su File-> Salva con nome e quindi scegliere 'Unicode' dal 'Codifica' nell'elenco a discesa
.Stai scrivendo in console troppo oppure solo seing i risultati in console? Questo sembra un problema pep-0263, come ha detto petraszd.
print p.decode('your-system-encoding')
dovrebbe funzionare in consolle (non so che cosa è il sistema di codifica si utilizza per il russo)
Se si utilizza un file .py, è necessario inserire # -*- coding: UTF-8 -*-
(in sostituzione di UTF-8 con codifica Rusian) sulla parte superiore del file e credo che non v'è alcuna necessità per il .decode
in print
se il sistema operativo è configurato con la giusta codifica. (Almeno io non ne ho bisogno, ma non so come funziona con la Russia)