Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2011 20:42:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

А теперь запустите, скажем
$ ./mega_script.py|wc



Офлайн

#2 Фев. 23, 2011 21:08:14

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

Мда, неприятно



Офлайн

#3 Фев. 23, 2011 22:16:21

m.meehalkoff
От:
Зарегистрирован: 2011-01-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Отображение utf-8 в консоли Windows

truporez
Вот такой скрипт выводит надпись и без выкрутасов с функцией

#! /usr/bin/env python
# -*- coding: UTF-8 -*-

print u"Может так лучше?"
Так несомненно лучше, но не в оси от мелкомягких. В виндах в консоли будет выводиться мусор.



Офлайн

#4 Фев. 23, 2011 22:54:33

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

В виндах, в 7-ке всё как раз ок.



Офлайн

#5 Фев. 24, 2011 16:50:51

m.meehalkoff
От:
Зарегистрирован: 2011-01-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Отображение utf-8 в консоли Windows

truporez
В виндах, в 7-ке всё как раз ок.
Точняк. Автор топика, ставьте себе виндас 7.



Офлайн

#6 Фев. 24, 2011 17:12:58

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

Если вы не заметили, в первом посте печатаются utf-8 строки а не юникод. И это - часть проблемы.



Офлайн

#7 Фев. 24, 2011 19:19:26

m.meehalkoff
От:
Зарегистрирован: 2011-01-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Отображение utf-8 в консоли Windows

Андрей Светлов
Если вы не заметили, в первом посте печатаются utf-8 строки а не юникод. И это - часть проблемы.
Вопрос наверно глупый, но для чего печатать в консоль именно utf-8 строки? Какая разница юникод или нет?



Офлайн

#8 Фев. 24, 2011 19:59:27

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

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 - и получали проблему.



Офлайн

#9 Фев. 26, 2011 08:02:10

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Отображение utf-8 в консоли Windows

Таки можно сделать юникод в NT 5.х или нельзя (юникод, т.е. одновременное отображение разных кодировок, а не костыли с перекодировкой)?



Офлайн

#10 Фев. 26, 2011 11:47:40

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Отображение utf-8 в консоли Windows

cmd.exe работает в кодировке mbcs. Которая на вашей винде для консоли равна cp866. Еще вопросы есть?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version