Создает mojibake, потому что ''
является литералом байтовой строки в Python 2 (если не используется from __future__ import unicode_literals
).Вы печатаете байты utf-8 (кодирование исходного кода) на консоли Windows, которая использует некоторую другую кодировку символов (кодировка отличается, если вы видите mojibake):
>>> print(u'Русский'.encode('utf-8').decode('cp866'))
╨а╤Г╤Б╤Б╨║╨╕╨╣
Решениедолжен печатать Unicode вместо , как предложил @JBernardo :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u'Русский')
Работает, если консольное кодирование поддерживает буквы кириллицы, например, если это cp866
.
Есливы хотите перенаправить вывод в файл;Вы можете использовать переменную окружения PYTHONIOENCODING
, чтобы установить кодировку символов, используемую Python для ввода-вывода:
Z:\> set PYTHONIOENCODING=utf-8
Z:\> python your_script.py > output.utf-8.txt
Если вы хотите печатать символы Юникода, которые не могут быть представлены в кодировке консоли ( Кодовая страница OEM ), затем вы можете установить win-unicode-console
Пакет Python :
Z:\> py -m pip install win_unicode_console
Z:\> py -m run your_script.py