b>j)΄!Pԫ&;"kB޶}pSVT(wę!j x;-m@JnQ+պכ7MajfJͱ4jѲ撆RxZMz7vIW/dٞТזcZM~ji ߒsQzԠDW3Den"M+/B:-uIJ7j委9p='mANޭ=/B:-n&nUfqxZM~c Ϲ+,&ᾺܢF[(1*" ϒ"Jԧ<;b" "jܢF[x ,!q қ*]/؝27SMcs"ޭDQ/应ܢF_! :s" 7`F+SVTn"IJnQ/应B 4 wD"IJ׭-`S9DrjiEJ߅gJ应矁[xZM~n"IB؃!'Тѕ+(mIKʭ/|ϐܢF[xZMzG %嬩/c[[ Новый триал. Сборка 12758.

Новый триал. Сборка 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 для проверки вышеизложенной идеи оказалась успешной, так что теперь дело за малым — реализовать все это на уровне провайдера. Надеюсь, что после этого наступит гармония и умиротворенность 🙂

Leave a Comment