Уведомления

Группа в Telegram: @pythonsu

#1 Июль 28, 2009 16:56:23

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

Чем отличается функция unicode() от метода string.encode('utf-8') ?
Ответ “ничем” не принимается потому что на практике познал что таки отличается :)
Желательно сцылки на офф доку



Офлайн

#2 Июль 29, 2009 21:34:46

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

pochechyev
Чем отличается функция unicode() от метода string.encode('utf-8') ?
Хм… Тем что они делают противоположные вещи. unicode() преобразует байтовую строку в дофолтной кодировке в уникодную, string.encode() делает из уникодной строки байтовую в указанной кодировке.



Офлайн

#3 Июль 29, 2009 23:06:27

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

не совсем понял
есть s='test' допустим в cp1251
unicode(s) - конвертирует в utf-8
s.encode(utf-8) - получается делат тоже самое …

нифига не понял )


спрашиваю потому что русские имена файлов при аплоаде не хотели самостоятельно перекодироватся, тогда я воспользовался unicode() - не помогло, а вот s.encode('utf-8') сработало.



Отредактировано (Июль 29, 2009 23:08:33)

Офлайн

#4 Июль 29, 2009 23:45:43

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

pochechyev
есть s='test' допустим в cp1251
unicode(s) - конвертирует в utf-8
Нет. У вас байтовая строка s в кодировке cp1251. Конструктор (функция) unicode преобразует её, используя дефолтный кодек (обычно ASCII), в последовательность уникодных символов. Естественно сломается.
pochechyev
s.encode(utf-8) - получается делат тоже самое …
Тут масло масленное, байтовую строку вы хотите преобразовать в такую же байтовую в указанной кодировке. Тоже сломается.

Вот s.decode равносильна unicode,

В общем суть такая - в питоне есть два типа строк: байтовые и уникодные. Методы encode/decode и функции unicode/str преобразуют из одних в другие.



Офлайн

#5 Июль 30, 2009 01:00:46

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

Общую суть я понял. Но детали нужно прояснять. Не подскажите где можно подробнее об этом почитать ?



Офлайн

#6 Июль 30, 2009 11:15:52

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

pochechyev
Общую суть я понял. Но детали нужно прояснять. Не подскажите где можно подробнее об этом почитать ?
Использование Unicode в Python (pdf)
и
Использование Unicode в Python



Офлайн

#7 Июль 31, 2009 10:14:36

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

Спасиб



Офлайн

#8 Июль 31, 2009 10:22:53

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

и еще один вопрос.
в Python 2.5 стандарт таки unicode?



Офлайн

#9 Окт. 27, 2009 14:43:14

iamfilin
От:
Зарегистрирован: 2009-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

У меня не пашет unicode ни decode

mystr = “моя строка”
unistr = mystr.decode('utf-8')

выдает ответ:
LookupError: no codec search functions registered: can't find encoding

подскажите, в чем проблема



Офлайн

#10 Окт. 27, 2009 15:05:25

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

unicode vs string.encode('utf-8')

Какой питон?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version