Проблема юникода

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Muchacho_

Проблема юникода

Сообщение Muchacho_ » 27 ноя 2004, 20:46

Здравствуйте!
Как мне сохранить юникодские символы (например для языков азии) в таблице Interbase? У меня все визуальные компоненты доступа к данным поддерживают юникод, но когда добавляю запись вместо символов появляются символы "?". Что можно сделать, подскажите пожалуйта

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 28 ноя 2004, 00:26

1) Поля таблицы созданы с кодировкой UNICODE_FSS?
2) DB-aware компоненты действительно правильно работают с unicode? Какую библиотеку используешь?
3) Грид умет показывать Unicode?
4) Свои данные писать/читать через ISQL можешь?

Гость

Сообщение Гость » 28 ноя 2004, 16:52

1) да
2) да - TntUnicodeControls
3) да
4) нет, не могу. ISQL не поддерживает эти символы.
говорят что модули и библиотеки СУБД тоже должны поддерживать юникод, но помоему если в таблице есть тип UNICODE_FSS , то в чем проблема?

Гость

Сообщение Гость » 28 ноя 2004, 19:36

Извините, я не заметил, что вы имеете ввиду сказав DB-Aware компоненты? Если визуальные то да

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 29 ноя 2004, 11:03

С сервером через что работаешь? API, IBX, ODBC, OLEDB? Какая технология и какой драйвер? С какой клиентской кодировкой работаешь (которая в параметрах коннекта)?

Muchacho_

Сообщение Muchacho_ » 02 дек 2004, 16:30

а по умолчанию какой? я просто установил в Win XP версию Interbase 6.5 и ничего не изменял. Использую компоненты страницы InterBase, в параметрах коннекта ничего не указываю про кодировку.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 02 дек 2004, 16:38

ну, батенька, прямо так взял IB 6.5, взял IBX, и хочешь чтобы юникод работал??? Чтобы юникод работал, его IBX должен поддерживать. А так он напрямую сует то что ты передаешь, а потом принимает с сервера, и получаются "???".

FIBPlus, говорят, в версии 6 юникод поддерживают.

А для разминки рекомендую прочитать
www.ibase.ru/devinfo/ib_unicode.htm

Гость

Сообщение Гость » 02 дек 2004, 16:59

Да я прочитал эту статью. В вашем сайте есть ссылка на драйвера ODBC для InterBase, который поддерживает юникод (триал). Скачал, установил как сказано в readme - Добавил в панель управления-> Админстрирование->Источники данных (ODBC) . Теперь как мне использовать его? :D

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 02 дек 2004, 17:01

тогда теперь почитай, как и чем пихать unicode в базу. про widestring там и все такое...

p.s. эк тебе приспичило :-)

СТОП! Ты, будучи на IBX, зачем полез в ODBC???? Чем ты собираешься К НЕМУ цепляться из Delphi - через BDE, который unicode не поддерживает? Через ADO?
Попробуй FIBPlus 6, все таки.

Гость

Сообщение Гость » 02 дек 2004, 17:12

Говорят что я должен использовать TWideStringField вместо TIBStringField. А когда заменяю в коде все TIBStringField на TWideStringField (есть срециальный модуль, скачал из интернета), выводит сообщение "TIBStringField not found".
kdv писал(а):тогда теперь почитай, как и чем пихать unicode в базу. про widestring там и все такое...
А вы подскажите пожалуйста где прочитать? В google искал, ничего хорошего

Гость

Сообщение Гость » 02 дек 2004, 17:17

да через BDE :(

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 02 дек 2004, 18:17

я практическим применением юникода не интересуюсь, поэтому кроме гугла есть еще yandex.ru, rambler.ru, и соответственно, документация и хелпы по Delphi с примерами. А FIBPlus и IBX идут в исходных текстах.

Гость

Сообщение Гость » 02 дек 2004, 22:28

ей, вы че? Случайно не представительница DevRace? :DDD

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 дек 2004, 09:31

зато я ЗАКОННЫЙ продавец FIBPlus. 740 рублей пожалел?

Serj
Сообщения: 15
Зарегистрирован: 26 окт 2004, 16:40

Сообщение Serj » 03 дек 2004, 12:48

Кстати, с UTF-8 (который в Птице UNICODE_FSS) можно работать (хранить/выводить/записывать) и если поля в базе объявлены с charset NONE (у меня вся база так объявлена). Я сам был удивлен, но работает. Из неприятностей - иногда собственный парсер, основанный на string классе глючит, но в основном проблем нет. Ну и, разумеется, нужно учитывать, что длина полей задается в байтах, а не символах.

Muchacho_

Сообщение Muchacho_ » 03 дек 2004, 14:32

я попробовал, спасибо. Но не для всех символов получается :(

Serj
Сообщения: 15
Зарегистрирован: 26 окт 2004, 16:40

Сообщение Serj » 03 дек 2004, 16:09

А чем в базу загоняешь ? Я просто использую чистый API (вернее легкую обертку) - проблем нет. Может быть у тебя не помещается сам текст ?
Дело в том, что (как Дима неоднократно писал) для слова "Вася" русскими буквами в уникоде (UTF8) надо не 4, а целых 12 байт.

Muchacho_

Сообщение Muchacho_ » 03 дек 2004, 21:13

получилось в FIBPlus 6.0 :!: :!: :D Спасибо вам большое, я очень рад. Как мне купить? Можно через кредитную карточку или через банк?

Гость

Сообщение Гость » 04 дек 2004, 14:37

Проблема была в том что в IB нет полей типа WideString, только TIBStringField, а в FIBPlus есть такое поле типа TFIBWideStringField

Ответить