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