Страница 216 из 216

Clarion 11-12

Добавлено: 13 Январь 2026, 19:59
finsoftrz
Игорь Столяров писал(а): 12 Январь 2026, 19:27 Мне вообще не нравится, что USTRING имеет размер. Это просто очередное натягивание совы на глобус ...
Да, я тоже думаю, что это ошибочный подход. Длину у STRING понять можно, это позволяет быстро выделять память под фиксированное количество байт. В случае с юникодом на один символ может приходиться разное количество байт, поэтому строка может иметь переменную длину. Размерность ustring можно оставить в синтаксисе языка для обратной совместимости, как это сделано в sqlite. То есть, мы там можем задать myfield char(100), но на самом деле поле будет содержать столько байт, сколько туда записали.
Судя по тому, что написал RZ, он решил, что пока сойдет 2 байта на символ. Но все равно придется переходить на строки с переменной длиной, заново переписывая соответствующий код в компиляторе и рантайме.

Clarion 11-12

Добавлено: 13 Январь 2026, 20:27
kreator
Дед Пахом писал(а): 12 Январь 2026, 23:40 Драйвер (в теории) должен преобразовывать строку UTF-16 в UTF-8 на лету, прозрачно для нас. То есть к примеру есть таблица

Код: Выделить всё

MyFile  FILE, DRIVER...
Record  RECORD
Id  LONG
Name USTRING
END
то ADD(MyFile) должен корректно передать юникод на сервер, в нужной кодировке.
А зачем нужны эти преобразования? И на сервер, и с сервера? Такой подход в других ЯП?

Clarion 11-12

Добавлено: 13 Январь 2026, 20:29
Игорь Столяров
finsoftrz писал(а): 13 Январь 2026, 19:59 Судя по тому, что написал RZ, он решил, что пока сойдет 2 байта на символ.
Я вот тоже сижу и думаю, как бы сделать ТС ПИоТ, что бы меня перестали о нём спрашивать и просто от .. стали в общем.
Все мы немного Robert Zaunere ... :D

Clarion 11-12

Добавлено: 13 Январь 2026, 20:34
finsoftrz
Игорь Столяров писал(а): 13 Январь 2026, 20:29
finsoftrz писал(а): 13 Январь 2026, 19:59 Судя по тому, что написал RZ, он решил, что пока сойдет 2 байта на символ.
Я вот тоже сижу и думаю, как бы сделать ТС ПИоТ, что бы меня перестали о нём спрашивать и просто от .. стали в общем.
Все мы немного Robert Zaunere ... :D
А Вы прошли сертификацию по ПИоТ? Тут одна птичка напела, что у них процесс занял пару недель.

Clarion 11-12

Добавлено: 13 Январь 2026, 20:37
Дед Пахом
kreator писал(а): 13 Январь 2026, 20:27 А зачем нужны эти преобразования? И на сервер, и с сервера?
Наверно, чтобы на сервере и клиенте данные совпадали.

Clarion 11-12

Добавлено: 13 Январь 2026, 22:47
kreator
Дед Пахом писал(а): 13 Январь 2026, 20:37
kreator писал(а): 13 Январь 2026, 20:27 А зачем нужны эти преобразования? И на сервер, и с сервера?
Наверно, чтобы на сервере и клиенте данные совпадали.
А Microsoft принципиально UTF-8 не хочет воспринимать? Все данные на клиенте должны быть в UTF-16?
В качестве примера создаю текстовый файл в UTF-8 блокнотом. Снова его открываю. Копирую содержимое. И определяю кодировку скопированного в онлайне. Показывает, что UTF-8. Т.е. блокнот может работать с UTF-8. Зачем UTF-16 на клиенте, если в БД UTF-8?

Clarion 11-12

Добавлено: 13 Январь 2026, 22:51
Дед Пахом
Чё ты ко мне-то привязался? Я на грека похож? Мне лично пофигу как они юникод реализовали.

Clarion 11-12

Добавлено: 13 Январь 2026, 23:20
Игорь Столяров
Если интересно разобраться в вопросе, вот здесь хорошее стартовое описание.
https://www.interface.ru/home.asp?artid=6041

Интересный момент:

Код: Выделить всё

Предыдущие версии СУБД Oracle и языка Java также используют формат UCS-2 и не способны распознавать суррогатные символы.
Корпорация Oracle ввела поддержку Юникода в качестве набора символов для баз данных начиная с версии Oracle 7.
В настоящее время СУБД Oracle поддерживает два метода хранения данных в формате Юникод: 
первый - кодировка UTF-8 для символьных типов данных CHAR и VARCHAR2 и для всех имен и литералов SQL; 
второй - кодировка UTF-16 для хранения типов данных Юникод NCHAR, NVARCHAR и NCLOB. 
СУБД Oracle позволяет использовать оба метода одновременно.
Т.е. для БД необязательно делать выбор и метаться между умными и красивыми. :D
Ну и твёрдое убеждение, что SV & RZ задумали сделать хрень полную, которая убивает сам смысл UTF-16 ...

Clarion 11-12

Добавлено: 13 Январь 2026, 23:32
finsoftrz
Дед Пахом писал(а): 13 Январь 2026, 22:51 Чё ты ко мне-то привязался? Я на грека похож? Мне лично пофигу как они юникод реализовали.
Я сейчас чаем чуть не поперхнулся. :lol: