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

Проблема буквы 'я' в Interbase Services API

Добавлено: 04 июн 2006, 09:56
Saltaev
"Заливаю" пользователей в БД посредством Interbase Services API:
isc_service_start(..., isc_action_svc_add_user | isc_action_svc_modify_user, ...). isc_spb_user_name - набор латинских символов, а вот isc_spb_sec_firstname, isc_spb_sec_middlename и isc_spb_sec_lastname на русском. Так вот, если используется кодировка Windows-1251 то при попытке создать/заменить пользователя, в ФИО которого содержится строчная русская 'я' происходит
  • Unable to complete network request to host "localhost" (isc_network_error).
    Error reading data from the connection (isc_net_read_err).:shock:
Понятно, что буква 'я' в Windows-1251 имеет код 0xFF и этот код имеет какой то особый смысл для Services API. Найдено "противоядие" - строчную 'я' заменяю на прописную 'Я' или использую вообще другую кодировку (например CP-866). Но все-таки, в чем же причина и как ее "грамотно" побороть? :?:

Информация о версиях:
  • gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
    Firebird TCP/IP server version LI-V1.5.2.4731 Firebird 1.5
    Kernel 2.6.9-1.667 on an i686
04.06.2006

Добавлено: 04 июн 2006, 10:41
kdv
все буржуи любят в своих протоколах использовать символы выше 127.
Грамотно побороть - это починить код сервера.
p.s. заливать ФИО внутрь security.fdb не вижу смысла, т.к. в FB 2 к этой БД прямой доступ запрещен.

Добавлено: 05 июн 2006, 08:47
Dimitry Sibiryakov
Еще можно вспомнить что поля ФИО в security.fdb имеют charset UNICODE_FSS и соответственно их надо заполять в utf-8.