Как вывести в консоль русские символы c выполняемой программы на python?
Чтобы напечатать произвольный текст, используйте unicode тип:
print(u'\u0439')
#XXX DO NOT DO IT print [u'\u0439'.encode('utf-8')] # a bytestring in a list # -> ['\xd0\xb9']
print(list_) в Питоне печатает элементы списка, вызывая repr() функцию для каждого отдельного элемента, аналог: print(«[%s]» % «, «.join(map(repr, list_))) . Подобное текстовое представление хорошо для отладки: оно призвано быть однозначным (во многих случаях eval(repr(obj)) == obj ). См. Чем отличается __repr__ от __str__ ? Чтобы избежать вызова repr() , форматируйте вашу коллекцию вручную.
Чтобы получить человекочитаемый текст, декодируйте байты в том месте где вы их получаете (на границе с внешним миром), где у вас больше информации об их кодировке и передавайте текст внутри программы как unicode тип. Кодируйте текст обратно в байты, используя подходящее представление, только когда необходимо отдать данные (записать на диск, отправить по сети). Это так называемая концепция Unicode sandwich: «decode early, encode late, use Unicode inside».
Обратите внимание, что хотя попытка напечатать байты напрямую может иногда работать, но это может сломаться как только окружение изменится. К примеру, если вы напечатаете байты, которые представляют текст, закодированный в cp1251 кодировке, в окружении ожидающем cp866 кодировку, то вы можете получить кракозябы. Используйте Юникод для работы с текстом в Питоне. Более строгое отношение к смешиванию Unicode текста и байт—это одно из ключевых отличий Python 3 по сравнению с Python 2.
Бывают исключения, когда вашей программе приходится много работать с путями на *nix системе в Питоне 2, тогда удобно рассматривать пути как непрозрачные куки и получать/передавать их обратно системе как есть в виде байт. См. Как работать с путями c русскими символами?
$ PYTHONIOENCODING=utf-8 python -c 'print(u"\u0439")' > output.txt
На Windows, может быть полезен win-unicode-console пакет. См. Как из Python вывести на Windows-консоль строку в Юникоде?
Если вы хотите печатать в тексте самой Питон-программы русские буквы, тогда на Python 2, необходимо явно декларировать используемую кодировку наверху .py файла; и чтобы не приходилось использовать u» префикс для создания строк из констант ( » ) в тексте программы, можно включить unicode_literals :
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import unicode_literals print('Здравствуй, мир!')
Обе опции можно опустить на Питоне 3 (по умолчанию всё работает).
Обратите внимание, что coding: utf-8 (кодировка исходного кода) не имеет никакого отношения к кодировке ввода/вывода—это независимые вещи.
Как заставить выводить русский текст Python?
Что нужно сделать что-бы в консоль выводилась кириллица?
Для англ. алфавита — работает, а для русского — нет.
__author__ = 'getlucky' # -*- coding: utf-8 -*- def cesarMethod(message): output = [] alphabet = 'abcdefghijklmnopqrstuvwxyz'#'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' steps = int(raw_input('Введите Ваш ключ: ')) for i in message: if i == ' ': output.append(' ') else: pos = alphabet.index(i) + steps if pos >= 25: pos -= 26 output.append(alphabet[pos].decode('utf8')) print 'Зашифрованное сообщение: ', ''.join(output) message = raw_input('Введите Ваше сообщение: ').lower() cesarMethod(message)
- Вопрос задан более трёх лет назад
- 47940 просмотров
2 комментария
Оценить 2 комментария
linux/windows? ошибка/кракозяблы в консоле? python2.7?
hardwellZero @hardwellZero Автор вопроса
Oscar Django: linux, 2.7, скрин — prntscr.com/646fuw
Решения вопроса 1
Лучшая документация — исходники
# -*- coding: utf-8 -*- message = 'ывпавыапавыпвпав' for i in message: print(i)
сравните вывод с
message = u'ывпавыапавыпвпав' for i in message: print(i)
разница всего в одном символе
# -*- coding: utf-8 -*- def cesarMethod(message): output = [] # alphabet = 'abcdefghijklmnopqrstuvwxyz'#'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' alphabet = u'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' # steps = int(raw_input('Введите Ваш ключ: ')) steps = 2 for i in message.decode('utf8'): if i == ' ': output.append(' ') else: pos = alphabet.index(i) + steps if pos >= 25: pos -= 26 output.append(alphabet[pos]) print 'Зашифрованное сообщение: ', ''.join(output) # message = raw_input('Введите Ваше сообщение: ').lower() message = 'специальнодлятостера' cesarMethod(message)
Как вывести русский текст в консоль?
Что-то я совсем запутался с кодировкой в python, версия стоит 2.7.4 пытаюсь выводить в консоль Windows Привет! на кириллице, а получаю «очень красивый текст». Объясните что к чему?
1 2 3 4
#-*- coding:cp1251 -*- s = "Привет!" print s input()
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вывести в консоль русский текст
Здравствуйте. Я понимаю что тема поднималась не один десяток раз, но все же. Установил.
Вывести русский текст в консоль
Возможно ли и как, выводить на Си(не С++, а именно Си, так как нам не льзя использовать элементы.
Вывести в консоль и псевдографику и русский текст вместе
подскажите пожалуйста как в консоль вывести и псевдографику и русский текст вместе.
Какой директивой в Turbo C вывести на консоль русский текст?
Например в Турбо паскале uses charset; //Не обязательно, только //если компилятор выдаёт ошибку .
Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой.
Как заставить Python выводить на экран русский текст с помощью функции print? Пишу на Notepad++
print(«Русский текст») или вместо » поставь `.Начни учить Python не с каких-то новостей и т. д., а найди нормальный гайд/курс. Я бы посоветовал тебе этот.Думаю за неделю ты сможешь не то что русский текст писать, а собственную, хоть и плохую, но программу).
Остальные ответы
Не уверен, но попробуй задать в переменную типо a = Привет, а в принт задай чтоб вывело a
Это от кодировки зависит. print(«привет») так-то. Если проблема с кодировкой, то переменные не помогут. Поставь нормальный IDE, например sublime text 3 или VS Code
Проверь кодировку сначала..
Установи UTF-8 без BOM
Заходи в Notrpad++ в Плагины -> NPPEXEC -> Console Output, в первом окошке ставь ANSI во втором UTF-8