Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Питоновский вопрос кодировок  (Прочитано 1558 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kolia88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)
Python 2 7 6
Здравствуйте! вопрос про кодировки сервер присылает такой вид не подскажите люди добрые как превратить это в нормальный текст с русским языком?

Пользователь решил продолжить мысль 19 Мая 2014, 21:55:33:
« Последнее редактирование: 19 Мая 2014, 21:55:33 от kolia88 »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Питоновский вопрос кодировок
« Ответ #1 : 20 Мая 2014, 00:16:03 »
бла-бла.decode('cp1251')  ?
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн kolia88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Питоновский вопрос кодировок
« Ответ #2 : 20 Мая 2014, 01:18:54 »
С этой проблемой временно разобрался, пользуюсь пока консолью питона, а вот сообщения которые я посылаю на русском, сервер на странице сообщений отображает для другого пользователя и меня в кракозябрах например ?4??4??4??4??4??4??4??4??6?
« Последнее редактирование: 20 Мая 2014, 01:20:37 от kolia88 »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Питоновский вопрос кодировок
« Ответ #3 : 20 Мая 2014, 09:54:35 »
если в коментах питона написано:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
то тогда перед отправкой на это виндузячий сервер делай:
что-отправлять.encode('cp1251')
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Питоновский вопрос кодировок
« Ответ #4 : 20 Мая 2014, 11:10:01 »
В общем виде выглядит как-то так.
Если надо привести в нашу кодировку что-то непонятное
нечто_непонятное.decode('utf-8')
Если надо заслать кому-то, кто нас не понимает
наш_текст.encode('cp1251')
ЗЫ. А с питоном 3 отдельная песня.
« Последнее редактирование: 20 Мая 2014, 11:12:12 от alexander.pronin »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Питоновский вопрос кодировок
« Ответ #5 : 20 Мая 2014, 11:19:43 »
alexander.pronin, а разве если оригинальная строка в ср1251 то ее надо декодировать как utf-8?  :idiot2:
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Питоновский вопрос кодировок
« Ответ #6 : 20 Мая 2014, 13:07:11 »
Да, но это вопрос, конечно, интересный.
utf-8 является базовой кодировкой, к которой приводят другие кодировки и из которой можно перекодировать в другие кодировки.
Мб, я что-то не понимаю, но у меня сложилось такое мнение. Этот вопрос достаточно темный, поэтому для окончательного вывода всегда требуется эксперимент.
ЗЫ.
Мб все дело в том, что я для определенности всегда включаю строчку (на автомате - это уже шаблон)
#!-*-coding: UTF-8-*-
А как иначе, так я сразу знаю, с чем работаю. Питоны же бывают разные.
« Последнее редактирование: 20 Мая 2014, 13:11:21 от alexander.pronin »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Питоновский вопрос кодировок
« Ответ #7 : 20 Мая 2014, 15:02:50 »
Питон 2.7 тем плох, что там набор байт может быть сложен или найден в строке и наоборот - т.е. миксинг байтовой последовательности и строки - совершенно не критичен (во многих местах).
Питон 3 явно запрещает миксинг байтовой последовательности и строки. Более того, там явно разделены эти типы (даже набор методов типа разный).

Разница между строкой и цепочкой байтов в том, что для строки известна кодировка символов, которую она представляет, а байты могут быть чем угодно и для них неизвестно внутренней структуры и принципов организации.

Собственно 3-ка как раз и нацелена была на наведение порядка в вопросе строк и массивов байтов.

Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Питоновский вопрос кодировок
« Ответ #8 : 20 Мая 2014, 17:05:39 »
Я бы не сказал, что питон 2.7 плох по сравнению с 3.
Я бы сказал, что преимущества его являются продолжением его недостатков. А самое главное - "ручное управление", фигурально выражаясь.
Очень дельная статья на эту тему. Есть и другие подобные на хабре.
http://itnewsline.blogspot.ru/2012/07/python-3.html
Автору можно верить, я использую его модули-библиотеки (flask, jinja2, werkzeug ... - сделаны безукоризненно).

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Питоновский вопрос кодировок
« Ответ #9 : 20 Мая 2014, 18:38:20 »
alexander.pronin, хорошо, беру слово "плох" обратно. Назовем это просто особенностью (без оттенка положительности или отрицательности).

Почитав статью по ссылочке - я что-то не очень понял общей мысли - он пишет про 3.0 и потом более поздняя приписка что в 3.3 уже что-то поправили.  :idiot2:

Я сам не супер программист и с юникодом вообще в первый раз столкнулся недавно в своей программистской практике (имевшей перерыв почти на 10 лет). Но то что сделано в 3.3 мне пришлось больше по вкусу, чем то, что есть в 2.7. Именно строгостью - не нельзя вот просто так складывать строку и байты - лучше пусть ругнется интерпритатор на такое чем получится х.з. что.
Да и не мешает никто использовать парадигму "пиши явно все, что может подразумевать умолчания". На мой взгляд, именно в 3.3 (более ранними не пользовался) этих самых (часто выстреливающих багами) умолчаний попросту меньше.

Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.