Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2010 21:27:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

увидел очередной топик про кодировки в “Python для новичков”, вспомнил что у меня знакомые признавались что путаются в кодировках, и решил написать статью. Написал про кодировки так как я их понимаю.

прошу экспертов, у кого есть лишние 5 мин, посмотреть статью, указать на ошибки, чем дополнить. буду благодарен.

сама статья

Отредактировано (Март 27, 2010 21:29:09)

Офлайн

#2 Март 28, 2010 15:12:36

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

алилуя. Прикрепите топик xD

Добавьте там тока пометочку про третий питон и о том, что статья о ветке 2.x



Отредактировано (Март 28, 2010 15:13:20)

Офлайн

#3 Март 28, 2010 16:19:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

Zubchick
Добавьте там тока пометочку про третий питон и о том, что статья о ветке 2.x
готово :)

Офлайн

#4 Март 28, 2010 16:54:45

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

статья "Кодировки в python"

Хм… Не очень грамотно.

В python есть 2 вида кодировок: рабочая(внутренняя) - unicode и внешняя - str
Очень важно понимать, что unicode, это не кодировка! Это высокоуровневый объект для работы с символьными данными, или, проще говоря, с текстом. А str, это просто массив байт, которыми можно кодировать символы… А можно и не кодировать.
Дальше читать не стал, ИМХО настолько фундаментальная ошибка в первой же строчке говорит о том, что переделывать надо всё.



Офлайн

#5 Март 28, 2010 18:43:50

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

>> Дальше читать не стал, ИМХО настолько фундаментальная ошибка в первой же строчке говорит о том, что переделывать надо всё.

wine это эмулятор программ виндовз, чтобы запустить вашу программу под wine сделайте это…
дальше читать не стал, вайн это не эмулятор!!



Офлайн

#6 Март 28, 2010 19:07:15

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

ZZZ
Очень важно понимать, что unicode, это не кодировка! Это высокоуровневый объект для работы с символьными данными, или, проще говоря, с текстом.
я слазил на сам python.org - http://docs.python.org/tutorial/introduction.html#unicode-strings
там пишут что в питоне есть Unicode object который работает с Unicode data, далее ссылка на http://www.unicode.org/ где пишут что Unicode - универсальная кодировка где к каждому существующему символу присвоен уникальный код (число).

в питоне есть такой объект - unicode, но я пишу про кодировку unicode.

ща наверно как-нибудь укажу это в статье.

Офлайн

#7 Март 28, 2010 19:21:17

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

o7412369815963
ща наверно как-нибудь укажу это в статье.
все, написал и про объекты и про кодировки

Офлайн

#8 Март 28, 2010 20:31:54

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

статья "Кодировки в python"

Zubchick, не цепляйся. Мне кажется, что лучше сразу давать правильные понятия и определения, чтобы не вводить новичков в заблуждение. А то это как в школе: до какого-то класса говорят, что нельзя из меньшего вычесть большее…

объект unicode работает с текстом в кодировке unicode
Оно, в общем-то правильно, но запутано. Тут не важен тот факт, что он работает “в кодировке unicode”.
Ну да ладно, у меня ощущение, что я начал придираться.
Скажу так: мне не нравятся понятия внешней и внутренней кодировок.
1. ИМХО, куда важнее объяснить разницу между str и unicode;
2. Понятие кодировки вывода (в винде cp866, в никсах обычно utf-8);
3. Почему нельзя использовать cp1251 (кстати, из первого примера вытекает, что если я открою блокнотом файл, напишу в первой строке “# coding: utf-8”, то при сохранении файл будет не в cp1251, так что следующий пункт…);
4. Почему нужно использовать нормальные редакторы, вместо блокнота;
5. repr, это далеко не всегда тоже, что str или .encode.

P.S.
происходит вызов _repr_() который возвращает
Либо “repr”, либо “__repr__”, но никак не “_repr_”.



Офлайн

#9 Март 28, 2010 21:11:43

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

статья "Кодировки в python"

ZZZ
3. Почему нельзя использовать cp1251 (кстати, из первого примера вытекает, что если я открою блокнотом файл, напишу в первой строке “# coding: utf-8”, то при сохранении файл будет не в cp1251, так что следующий пункт…);
почему нельзя использовать cp1251 ? Это же просто указатель в какой кодировке файл.

сейчас сделал в виндовом блокноте файл
# coding: cp1251

print u'test'
print u'Проверка'
результат:
test
Проверка
в linux тот же результат

ZZZ
происходит вызов _repr_() который возвращает
Либо “repr”, либо “__repr__”, но никак не “_repr_”.
у меня вики редактор 2 черточки подрят превращает в подчеркивание поэтому поставил по одной черте, сейчас сделал вставку html для этого слова :)

Офлайн

#10 Март 28, 2010 22:07:58

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

статья "Кодировки в python"

o7412369815963
почему нельзя использовать cp1251 ? Это же просто указатель в какой кодировке файл.
Я о том, что использовать надо только utf-8. Всегда и везде.
Ну и главное в моём замечании то, что новичок не всегда поймёт разницу между указанием кодировки интерпретатору и реальной кодировкой файла.
Ладно, я больше не буду придираться – посмотрим, что другие скажут.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version