Если вы запускаете интерпретатор python из оболочки в Linux или аналогичных системах (BSD, не уверен в Mac), вам также следует проверить кодировку по умолчанию для оболочки.
Вызовите locale charmap
из оболочки (не интерпретатора Python), и вы должны увидеть
[user@host dir] $ locale charmap
UTF-8
[user@host dir] $
Если это не так, и вы видите что-то еще, например
[user@host dir] $ locale charmap
ANSI_X3.4-1968
[user@host dir] $
Python будет (по крайней мере, в некоторых случаях, таких как мой) унаследовать кодировку оболочки и не сможет печатать (некоторые? Все?) Символы Unicode. Собственная кодировка Python по умолчанию, которую вы видите и контролируете с помощью sys.getdefaultencoding()
иsys.setdefaultencoding()
в этом случае игнорируется.
Если вы обнаружите, что у вас есть эта проблема, вы можете исправить это,
[user@host dir] $ export LC_CTYPE="en_EN.UTF-8"
[user@host dir] $ locale charmap
UTF-8
[user@host dir] $
(Или, в качестве альтернативы, выберите любую раскладку клавиатуры, которую вы хотите, вместо en_EN.) Вы также можете отредактировать /etc/locale.conf
(или любой другой файл, который управляет определением локали в вашей системе), чтобы исправить это.