Здрасьте всем :))

Забавная мысля пришла мне после непродолжительной борьбы с UTF8
строками.

[Обычные текстовые колонки]

Для VARCHAR мы можем явно указать длину строки - в первых двух байтах.

Для CHAR мы можем косвенно длину через размер буфера.

[Для массивов]

VARCHAR-ы (see BUG-1588) обрабатываются как строки завершающиеся
нулем.

CHAR-ы размер фиксирован - размер элемента.

-------
Засада с UTF8 заключается в том, что выделяя 4*N байта мы можем одно и
тоже количество символов получить как в N байтах, так и во всех байтах
буфера.

В случае UTF8-CHAR-ов при загрузке данных с сервера мы не можем "в
легкую" определить - сколько актуальных байт нам вернули.

При передаче UTF8-CHAR-ов на сервер - мы не можем сказать сколько
актуальных байт мы передаем.

[Попрошу заметить идеи ограничивать строки нулем идут в сад]

Для массивов это вообще на 100% актуально - там размером буфера нельзы
варьировать ни при загрузке, ни при выгрузке - он один для всех
элементов массива.

-------
Ну так вот. Переходим к сути моего, так сказать, спича - тип CHAR в
плане приема-передачи UTF8 данных - отстой полный.

А поскольку следить за тем какие мы данные мы передаем - UTF-8 или нет
- это весьма муторное занятие, обмен всех текстовых данных лучше
осуществлять через VARCHAR

Вот так.
Коваленко Дмитрий.
www.ibprovider.com

Ответить