Найти - Пользователи
Полная версия: unicode vs string.encode('utf-8')
Начало » Python для новичков » unicode vs string.encode('utf-8')
1 2
pochechyev
Чем отличается функция unicode() от метода string.encode('utf-8') ?
Ответ “ничем” не принимается потому что на практике познал что таки отличается :)
Желательно сцылки на офф доку
Александр Кошелев
pochechyev
Чем отличается функция unicode() от метода string.encode('utf-8') ?
Хм… Тем что они делают противоположные вещи. unicode() преобразует байтовую строку в дофолтной кодировке в уникодную, string.encode() делает из уникодной строки байтовую в указанной кодировке.
pochechyev
не совсем понял
есть s='test' допустим в cp1251
unicode(s) - конвертирует в utf-8
s.encode(utf-8) - получается делат тоже самое …

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


спрашиваю потому что русские имена файлов при аплоаде не хотели самостоятельно перекодироватся, тогда я воспользовался unicode() - не помогло, а вот s.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 преобразуют из одних в другие.
pochechyev
Общую суть я понял. Но детали нужно прояснять. Не подскажите где можно подробнее об этом почитать ?
pythonwin
pochechyev
Общую суть я понял. Но детали нужно прояснять. Не подскажите где можно подробнее об этом почитать ?
Использование Unicode в Python (pdf)
и
Использование Unicode в Python
pochechyev
Спасиб
pochechyev
и еще один вопрос.
в Python 2.5 стандарт таки unicode?
iamfilin
У меня не пашет unicode ни decode

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

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

подскажите, в чем проблема
Александр Кошелев
Какой питон?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB