Как написать русские персонажи в файле?
-
02-10-2019 - |
Вопрос
В консоли, когда я пытаюсь выводить российские персонажи, это дает мне ????????????????
Кто знает почему?
Я попробовал писать в файл - в этом случае та же ситуация.
Например
f=open('tets.txt','w')
f.write('some russian text')
f.close
Внутри файла - ????????????????????????? /
или
p="some russian text"
print p
?????????????
В дополнительном блокноте не позволяйте мне сохранить файл с русскими буквами. Я даю это:
Этот файл содержит символы в формате Unicode, который будет потерян, если вы сохраните этот файл в виде текстового файла в закодированном ANSI. Чтобы сохранить информацию Unicode, нажмите Отмена ниже, а затем выберите один из параметров Unicode из выпадающего списка кодирования. Продолжать?
Как настроить мою систему, поэтому у меня не будет этих проблем.
Решение
Вот разобранный пример, пожалуйста, прочитайте комментарии:
#!/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
Другие советы
Попробуйте открыть файл с помощью кодеков, вам нужно
import codecs
а потом
writefile = codecs.open('write.txt', 'w', 'utf-8')
Вам необходимо определить кодировку файлов, если он содержит не-ASCII CHARS.
Какую консоль вы используете? Скорее всего, ваша консоль не поддерживает этот язык. Убедитесь, что ваша консоль поддерживает Unicode (и что ваше приложение отправляет строки Unicode).
Обновлять:
Чтобы устранить обновление к вашему вопросу относительно проблем с помощью Windows 'Notepad: нажмите «Файл-> Сохранить», а затем выберите «Unicode» из раскрывающегося списка «Кодирование».
Вы тоже печатаете в консоли или увидите только результаты в консоли? Это выглядит проблема PEP-0263, как сказал Петрасзд.
print p.decode('your-system-encoding')
должен работать в консоли (я не знаю, что такое система кодирования, которую вы используете для русского)
Если вы используете файл .py, вам нужно разместить # -*- coding: UTF-8 -*-
(замена UTF-8 с русским кодировкой) в верхней части файла, и я думаю, что нет необходимости в .decode
в print
Если ваша ОС настроен с правильной кодировкой. (по крайней мере, мне это не нужно, но я не знаю, как это работает с русским)