Вы можете сделать это, не полагаясь на неявную кодировку при печати. Не полагаться на это - хорошая идея в любом случае - неявное кодирование используется только при печати на стандартный вывод и когда стандартный вывод подключен к терминалу.
Лучше всего использовать unicode
везде и codecs.open
или codecs.getwriter
везде. Вы помещаете sys.stdout
в объект, который автоматически кодирует ваши строки Unicode в UTF-8, используя, например:
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
Это будет работать, только если вы везде используете юникод. Поэтому везде используйте юникод. Действительно, везде.