Множество вещей должно быть выровнено, чтобы правильно печатать символы:
- В какой кодировке сохранен скрипт?
- Есть ли в вашем скрипте оператор
# coding: xxxx
, где xxxxсоответствует кодировке, в которой сохранен файл? - Поддерживает ли ваш выходной терминал кодировку?
import sys; print sys.stdout.encoding
а.Если нет, вы можете изменить кодировку консоли?(chcp
команда в Windows) - Поддерживает ли используемый вами шрифт символы?
Сохраняя скрипт в UTF-8, это работает как в PythonWin, так и в IDLE.
# coding: utf-8
jap_word1 = u'中山'
jap_word2 = u'小倉'
print jap_word1
print jap_word2
Интересно, я получил ваши результаты с .encode('utf-8')
, добавленным к обоим отпечаткам в IDLE, но он работал правильно в Pythonwin, чье окно вывода по умолчанию поддерживает UTF-8.
Idle isстранный зверьsys.stdout.encoding
в моей системе выдает 'cp1252'
, который не поддерживает азиатские символы, но печатает первое слово неправильно, а второе - правильно при печати в UTF-8.