Запросы, планы, оптимизация запросов, ...
Модераторы: 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) . Теперь как мне использовать его?
-
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?
DD
-
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
Спасибо вам большое, я очень рад. Как мне купить? Можно через кредитную карточку или через банк?
-
Гость
Сообщение
Гость » 04 дек 2004, 14:37
Проблема была в том что в IB нет полей типа WideString, только TIBStringField, а в FIBPlus есть такое поле типа TFIBWideStringField