0

Доброго времени суток, столкнулся с проблемой в python 2.7 в заголовке указанно # -x- coding: utf-8 -x-(i'm sorry for x) в теле программы есть строка с raw_input(u'текст на русском'). Вопрос: как сделать, чтобы в скобках оператора raw_input появился русский текст? Тему гуглил, не помогло. Все примеры кривые и относятся к python 3.0 or higher.

  • 1
    Что значит "чтобы в скобках оператора raw_print появился русский текст"? – Sergey Gornostaev Feb 12 '18 at 14:10
  • нет такой встроенной функции raw_print(). Вы вероятно о raw_input() говорите. На Windows, win-unicode-console пакет можно использовать, чтобы обойти https://bugs.python.org/issue7768 Related: Unicode input with raw_input() in python – jfs Feb 12 '18 at 15:43
  • Да, я прошу прощения, за ошибку. r a w _input(и"Сколько тебе лет? ") – Илья Лозаненко Feb 12 '18 at 19:09
  • import codecs, sys / outf=codecs.getwriter('cp866')(sys.stdout, errors='replace') / sys.stdout=outf слеш переход строки, такой код нашел в справочной литературе, но он не работает. На экране вместо русского текста вопросы и иероглифы. – Илья Лозаненко Feb 12 '18 at 19:17
  • пакет поставили? – jfs Feb 12 '18 at 19:28
  • при попытке выполнить файл получаю такое сообщение: raceback (most recent call last): File "2.py", line 4, in uotf=codecs.getwriter('cp866')(sys.stduot, errors='replace') AttributeError: 'module' object has no attribute 'stduot' – Илья Лозаненко Feb 12 '18 at 19:30
  • к сожалению я работаю на linux mint – Илья Лозаненко Feb 12 '18 at 19:32
  • @ИльяЛозаненко на linux mint, чтобы не заморачиваться на Питоне 2, просто u уберите: raw_input('текст на русском') так как интерфейс с байтами работает. Внутри программы unicode используйте для текста, превращая в байты только по необходимости при общении с внешним миром. Или просто на Питон 3. – jfs Feb 12 '18 at 20:14
  • предыдущий вариант предполагает, что окружение ожидает текст в utf-8 кодировке (что крайне вероятно для linux mint). Но если это не так (к примеру, на Windows запустите), то можете кракозябры получить. Решение из принятого ответа громоздкое, но будет работать и на русской Винде (win-unicode-console позволил бы русский текст вне зависимости chcp значения, то есть не только на русской Windows). – jfs Feb 13 '18 at 07:00
  • Спасибо за комментарий, учту в работе)! – Илья Лозаненко Feb 13 '18 at 08:45

1 Answers1

1

Проверил, нормально работает как в консоли Windows с кодировкой CP866, так и в консоли Debian с кодировкой UTF-8.

# -*- coding: utf-8 -*-
import sys

x = raw_input(u'текст на русском\n'.encode(sys.stdout.encoding))
print x