¿Cómo escribir caracteres rusos en el archivo?

En la consola cuando estoy tratando de salida de caracteres rusos me da ???????????????

¿Quién sabe por qué?

Intenté escribir en archivo – en este caso la misma situación.

por ejemplo

f=open('tets.txt','w') f.write('some russian text') f.close 

el archivo interno es – ????????????????????????/

o

 p="some russian text" print p ????????????? 

En el Bloc de notas adicional no me permiten guardar archivos con letras rusas. Te doy esto

Este archivo contiene caracteres en formato Unicode que se perderán si guarda este archivo como un archivo de texto codificado ANSI. Para mantener la información de Unicode, haga clic en Cancelar a continuación y luego seleccione una de las opciones de Unicode de la lista desplegable de Codificación. ¿Continuar?

Cómo ajustar mi sistema, para que no tenga estos problemas.

Aquí hay un ejemplo resuelto, por favor lea los comentarios:

 #!/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 

Intenta abrir el archivo usando codecs, necesitas

 import codecs 

y entonces

 writefile = codecs.open('write.txt', 'w', 'utf-8') 

Debe definir la encoding del archivo si contiene caracteres que no son ASCII.

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

¿Qué consola estás usando? Es probable que tu consola no admita ese idioma. Asegúrese de que su consola sea compatible con Unicode (y que su aplicación esté enviando cadenas Unicode).

Actualizar:

Para abordar la actualización de su pregunta relacionada con los problemas con el Bloc de notas de Windows: Haga clic en Archivo-> Guardar como, y luego elija “Unicode” en la lista desplegable “Codificación”.

¿Está escribiendo en la consola también o solo está viendo los resultados en la consola? Esto parece un problema pep-0263 como dijo petraszd.

 print p.decode('your-system-encoding') 

debería funcionar en la consola (no sé cuál es el sistema de encoding que usa para el ruso)

Si está utilizando un archivo .py, debe colocar # -*- coding: UTF-8 -*- (reemplazar utf-8 con encoding Rusian) en la parte superior del archivo y creo que no hay necesidad de .decode en print si su sistema operativo está configurado con la encoding correcta. (Al menos no lo necesito, pero no sé cómo funciona con el ruso)