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.

È stato utile?

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.

http://www.python.org/dev/peps/pep- 0263 /

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top