Как записать русские символы в файл? - PullRequest
9 голосов
/ 08 июля 2010

В консоли, когда я пытаюсь вывести русские символы, это дает мне ???????????????

Кто знает почему?

Я пытался написатьв файл - в этом случае такая же ситуация.

например

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

внутри файла - - ????????????????????????????? /

или

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

В дополнительном блокноте не разрешается сохранять файл с русскими буквами.Я даю это:

Этот файл содержит символы в формате Unicode, которые будут потеряны, если вы сохраните этот файл как текстовый файл в кодировке ANSI.Чтобы сохранить информацию о Юникоде, нажмите «Отмена» ниже, а затем выберите один из параметров «Юникод» в раскрывающемся списке «Кодировка».Продолжить?

Как настроить систему, чтобы у меня не было таких проблем.

Ответы [ 5 ]

15 голосов
/ 08 июля 2010

Вот отработанный пример, пожалуйста, прочитайте комментарии:

#!/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
7 голосов
/ 08 июля 2010

Попробуйте открыть файл с помощью кодеков, вам нужно

import codecs

, а затем

writefile = codecs.open('write.txt', 'w', 'utf-8')
2 голосов
/ 08 июля 2010

Вам необходимо определить кодировку файла, если он содержит символы не ASCII.

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

1 голос
/ 08 июля 2010

Какую консоль вы используете? Скорее всего, ваша консоль не поддерживает этот язык. Убедитесь, что ваша консоль поддерживает Unicode (и ваше приложение отправляет строки Unicode).

Обновление:

Чтобы ответить на ваш вопрос, касающийся проблем с блокнотом Windows: нажмите «Файл» -> «Сохранить как», а затем выберите «Unicode» в раскрывающемся списке «Кодировка».

0 голосов
/ 08 июля 2010

Вы тоже печатаете в консоли или видите результаты только в консоли?Это похоже на проблему pep-0263, как сказал petraszd.

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

должно работать в консоли (я не знаю, какую систему кодирования вы используете для русского языка)

Если вы используетефайл .py, вам нужно поместить # -*- coding: UTF-8 -*- (заменив utf-8 на русскую кодировку) вверху файла, и я думаю, что нет необходимости в .decode в print, если ваша ОС настроена справильная кодировка.(по крайней мере, мне это не нужно, но я не знаю, как это работает с русским языком)

...