Посмотрим как там у нас в Java. Поехали по порядку...

0. Компоненты должны юзать сведения о кодовых страницах, возвращаемых сервером. Для этого им понадобиться иметь собственный аналог INTL-а. У нас щас поддерживается 49 кодовых страниц. Осталось 3 штуки. 1 простая, 2 замысловатых.

Согласен, поддерживается.

1. Если пользователь работает с ASCII строками - то он должен указать свою кодовую страницу. Компоненты приводят загруженные данные к этой кодовой странице. Если пользователь получает данные в виде UNICODE - то это не актуально. См. #2.

Не актуально, поскольку у нас строки Unicode. Для преобразований char[] <--> byte[] используется специальный параметр для JVM.

2. Компоненты доступа должны уметь привязывать к NONE-колонкам какую нибуть осмысленную кодовую страницу. Например WIN1251.

Согласен, работает.

3. Компоненты должны понимать мульти-чарсетные тексты запросов.

Это как? и что в них особенного?

В NONE подключении строки "с_именем_объекта_БД" должны конвертироваться в UNICODE_FSS (UTF8)

Зачэм?

4. Клиент должен передавать текстовые данные только через параметры. Тогда можно будет их более менее корректно конвертировать. Когда API начнет принимать текст запросов в UNICODE (не зависимо от кодовой страницы подключения), тогда можно будеть на это правило забить. Впрочем, и на правило #3, тогда тоже можно будет забить.

Не совсем понял с "более менее корректно"... У нас тексты запросов передаются в кодовой странице подключения. Если NONE, то там действует правило 2 (явно или неявно).

~400 тыс тестов для всяких извращенных комбинаций кодовых страниц (хранения, подключения, пользователя) вообщем-то гарантируют корректную работу. WIN1251 - точно оттестирован :-)

Ты из сам ручками писал?!

Роман

Ответить