Найти - Пользователи
Полная версия: unicode и utf-8
Начало » Python для новичков » unicode и utf-8
1 2
ZZZ
o7412369815963
в питоне все - высокоуровневый объект,
уникод - все же кодировка, символы кодируются в 16бит. за счет фиксированного веса символа с ним проще работать чем например с утф8 у которого вес символа плавающий. ( вес - кол-во бит )

POST и GET можно послать в уникоде, но сервер не поймет smile, а питон при передаче текста в уникоде преобразует его в утф8, например когда делаем принт или передачу данных через сокеты, на другой стороне выходит утф8.
Ну хорошо, в питоне даже интегер, это не просто дцать байт в памяти… Просто обычный str представляет массив байт, а unicode массив символов. Для того, чтобы передать массив символов по сети, тебе сначала нужно закодировать его в массив байт (потому что провода у нас только байты понимают). И в этом принципиальная разница. И не имеет значения, в какой кодировке эти символы хранятся внутри объекты – нельзя послать в сокет или сохранить на диск сам unicode, без кодирования его в str.

Романнн
Использую psycopg. Эту задачу можно решить вручную, т.е., к примеру, как предложил o7412369815963, хотелось бы так же как и с POST и GET ее решить проще.
Ну так кодируй в утф-8 перед посыланием в сокет.
Романнн
ZZZ
Ну так кодируй в утф-8 перед посыланием в сокет.
Сайт уже написан и придется везде так кодировать. Поэтому и спрашиваю, может существуют какие-то стандартные/нестандартные методы, чтобы решить эту задачу проще?
o7412369815963
ZZZ
1) Просто обычный str представляет массив байт, а unicode массив символов.
2) Для того, чтобы передать массив символов по сети, тебе сначала нужно закодировать его в массив байт (потому что провода у нас только байты понимают).
И не имеет значения, в какой кодировке эти символы хранятся внутри объекты – нельзя послать в сокет или сохранить на диск сам unicode, без кодирования его в str.
1) как бы да, согласен
2) можно послать и сохранить уникод:
WCHAR buf = L"Hello";
fwrite(f,&buf,sizeof(buf));
(С++), таким образом в файл будет записан сам уникод, в мире не только питон существует ;)
ZZZ
o7412369815963
2) можно послать и сохранить уникод:
Код:

WCHAR buf = L“Hello”;
fwrite(f,&buf,sizeof(buf));

(С++), таким образом в файл будет записан сам уникод, в мире не только питон существует wink
:-)))
Неее… Тут buf, это массив элементов по два байта (слово? а не зависит ли оно от порядка байт в слове?) каждый. Это равносильно u'Hello'.encode(“UTF-16”).
И понимание этого важнО.
o7412369815963
ZZZ
buf, это массив элементов по два байта
любые символы состоят из байтов, байты можно передать и сохранить, значит любые символы можно передать и сохранить, в том числе и уникод.
ZZZ
o7412369815963
любые символы состоят из байтов, байты можно передать и сохранить, значит любые символы можно передать и сохранить, в том числе и уникод.
Ты не понял той тонкой разницы, между логическим “символ” и физическим “байт”.
Символ можно закодировать в байты, а байты декодировать в символ. Символ это… Блин! Я не умею объяснять!
“Символ”, это просто логическое понятие, обозначающий некий… символ. Он имеет множество физических представлений (кодировок?). Тип unicode создан именно для работы с символами. Для того, чтобы текст был текстом, а не массивом байт в какой-то конкретной кодировке.
o7412369815963
ZZZ
Ты не понял той тонкой разницы, между логическим “символ” и физическим “байт”.
ты не знаешь что я понял или не понял. речь про можно записать или нет.
я знаю какую разницу ты имеешь ввиду. я писал свою операционную систему и у меня там были “свои” символы, и что? их нельзя на диск записать? да на диск можно записать состояние работающей операционной системы с открытым блокнотом и напечатанными в нем твои символы. и без разницы какой они имеют логический смысл и структуру, все будет записано.
ZZZ
o7412369815963
ты не знаешь что я понял или не понял. речь про можно записать или нет.
я знаю какую разницу ты имеешь ввиду. я писал свою операционную систему и у меня там были “свои” символы, и что? их нельзя на диск записать? да на диск можно записать состояние работающей операционной системы с открытым блокнотом и напечатанными в нем твои символы. и без разницы какой они имеют логический смысл и структуру, все будет записано.
Свою операционную систему писал, а на шифт нажимать забываешь… Думай, что думаешь, прежде, чем ещё раз подумать.
Всё, закрыли флейм.
Александр Кошелев
Да, спор у вас какой-то странный. ZZZ прав что unicode это набор символов из таблицы, а не кодировка.

Автору топика советую не морочить нам головку, а почитать чем отличаются указанные им же версии Джанги и как надо осуществлять миграцию.
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