Вопрос

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

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

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

Например

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.

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

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

Обновлять:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top