Новый триал. Сборка 12758.
Привет всем.
В новом триале:
- Реализованы новые алгоритмы для кодовой страницы UNICODE_FSS.
- Реализованы правильные алгоритмы для кодовой страницы UTF8.
UNICODE_FSS
Провайдер контролирует размер FSS-символа — он должен быть в пределах от 1 до 3 байт.
UTF8
В предыдущих сборках, для обработки UTF8 применялись алгоритмы от кодовой страницы UNICODE_FSS, что могло привести к проблемам с суррогатными символами. В представленной сборке реализованы правильные алгоритмы учитывающие структуру и диапазоны символов UTF8.
Тема UTF8 пока окончательно не закрыта. По всей видимости, нужно будет дорабатывать алгоритмы вычисления размера колонок UTF8 в юникодном режиме провайдера (режим по-умолчанию, когда колонки публикуются с типом WSTR) для поддержки суррогатных символов. Иными словами, на каждый UTF8 символ надо резервировать 2 UCS2 символа. И решать другие мелкие проблемы, которые были выявлены при тестировании UTF8.
Другое.
По всей видимости найденно корректное решение для вот этой вот специфической проблемы. Компоненты решения:
1. Передавать и получать данные с использованием blr-типов: text2, varying2.
2. Реализовать свой аналог апишной функции isc_array_gen_sdl, которая будет поддерживать text2, varying2.
3. Реализовать собственные аналоги апишных функций isc_array_put_slice, isc_array_get_slice, которые будут работать с использованием новой gen_sdl функции.
Вандальная модификация fbclient.dll для проверки вышеизложенной идеи оказалась успешной, так что теперь дело за малым — реализовать все это на уровне провайдера. Надеюсь, что после этого наступит гармония и умиротворенность 🙂