Форум сайта python.su
А теперь запустите, скажем
$ ./mega_script.py|wc
Офлайн
Мда, неприятно
Офлайн
truporezТак несомненно лучше, но не в оси от мелкомягких. В виндах в консоли будет выводиться мусор.
Вот такой скрипт выводит надпись и без выкрутасов с функцией#! /usr/bin/env python
# -*- coding: UTF-8 -*-
print u"Может так лучше?"
Офлайн
В виндах, в 7-ке всё как раз ок.
Офлайн
truporezТочняк. Автор топика, ставьте себе виндас 7.
В виндах, в 7-ке всё как раз ок.
Офлайн
Если вы не заметили, в первом посте печатаются utf-8 строки а не юникод. И это - часть проблемы.
Офлайн
Андрей СветловВопрос наверно глупый, но для чего печатать в консоль именно utf-8 строки? Какая разница юникод или нет?
Если вы не заметили, в первом посте печатаются utf-8 строки а не юникод. И это - часть проблемы.
Офлайн
utf-8 - потому что кодировка у файла была именно utf-8
Комментарий выглядит несколько непривычно - и тем не менее это нормальное задание кодировки.
Печатается то, что есть. Держать файлы в utf-8 во первых удобно, а во вторых это неплохо совмещается с разными не-виндовс.
Если печатается (на самом деле - выводится в sys.stdout.write) unicode - делается что-то вроде sys.stdout.write(s.encode(sys.stdout.encoding))
Для str такого преобразования не будет.
Кстати, ./mega_script.py|wc ломался именно потому, что stdout резко становился не isatty и терял свой encoding. По умолчанию подставлялся ascii - и получали проблему.
Офлайн
Таки можно сделать юникод в NT 5.х или нельзя (юникод, т.е. одновременное отображение разных кодировок, а не костыли с перекодировкой)?
Офлайн
cmd.exe работает в кодировке mbcs. Которая на вашей винде для консоли равна cp866. Еще вопросы есть?
Офлайн