Страница 1 из 1
FB и умляуты
Добавлено: 27 сен 2007, 14:37
dgs
Как правильно указать кодировку для базы что бы корректно вовдились итображались умляуты?
Добавлено: 27 сен 2007, 15:10
Dimitry Sibiryakov
Спросить у немцев, какая кодовая страница у них установлена по умолчанию. Ну или абсолютное решение - уникод.
Добавлено: 28 сен 2007, 16:17
dgs
Dimitry Sibiryakov писал(а):Спросить у немцев, какая кодовая страница у них установлена по умолчанию. Ну или абсолютное решение - уникод.
А если указать NONE?
Чем отличается
SET NAMES NONE;
и
DEFAULT CHARACTER SET NONE;
?
ещё я так понмаю у меня будут проблемы с отображением умляутов на клиенте которого я планирую писать на делфи?
Добавлено: 28 сен 2007, 17:31
kdv
SET NAMES NONE;
это команда ISQL. говорит чтобы isql в коннекте, который откроется СЛЕДОМ за этой командой, работал с символами в чарсете NONE.
DEFAULT CHARACTER SET NONE;
это часть оператора create database. при которой указывается УМОЛЧАТЕЛЬНЫЙ чарсет, который используется при создании объектов, если у них чарсет не указан явно.
www.ibase.ru/devinfo/ibrusfaq.htm
правда тут про уникод почти ничего не сказано. надо будет добавить, т.к. в IB2007 и FB2 теперь нормальный уникод есть.
Добавлено: 03 окт 2007, 17:02
dgs
Что бы приложение написанное на делфи корректно отображало немецкие символы что мне нужно сделать (свои экспирименты пока не увенчались успехом

)?
Использую FB 1.03, хотелсоь бы обойтись без юникода т.к. в делфи нtт нативной его поддержи, ели это конечно возможно.
Добавлено: 04 окт 2007, 12:04
dgs
Dimitry Sibiryakov писал(а):Спросить у немцев, какая кодовая страница у них установлена по умолчанию. Ну или абсолютное решение - уникод.
Знаю я кодировку 1252 ну и что всё равно умляуты не сохраняются

Добавлено: 14 янв 2008, 19:36
dgs
Создал базу FB embeded 2.03
SET SQL DIALECT 3;
SET NAMES WIN1252;
DEFAULT CHARACTER SET WIN1252;
Умляуты созраняются и отображаются нормально, но когда надо вести поиск по строке в которой есть умляут (делаю поиск разумеется select-ом) - результат всегда пустой, разумется поиск без умляутов работает отлично. Вопрос что делать что б селект у которого в условиях есть умлыту правильно отрабатывал.
Второй вопрос поскольку любимый тулз IB/FB - IBExpert так же не отображает умляуты у тексте запроса подскажите плиз как его натсроить чтоб отображал или посоветуйте другой инстурмент для отладки таких запросов. Спасибо!
Добавлено: 15 янв 2008, 08:17
Tonal
Какую ты указываешь кодировку подключения?
Добавлено: 15 янв 2008, 13:08
dgs
Tonal писал(а):Какую ты указываешь кодировку подключения?
lc_ctype=WIN1252
Не помню точно версия embeded не игноррирует ли случайно эти параметры?
Добавлено: 15 янв 2008, 13:16
SinDmit
немцы отвечают:
SET NAMES ISO8859_1;
а чтобы правильно сортировалось, то при создании поля:
ALTER TABLE <TableName> ADD <FieldName> VARCHAR(10) COLLATE DE_DE;
Добавлено: 15 янв 2008, 13:22
SinDmit
немцы отвечают:
SET NAMES ISO8859_1;
а чтобы правильно сортировалось, то при создании поля:
ALTER TABLE <TableName> ADD <FieldName> VARCHAR(10) COLLATE DE_DE;
Добавлено: 15 янв 2008, 14:28
dgs
SinDmit писал(а):немцы отвечают:
SET NAMES ISO8859_1;
а чтобы правильно сортировалось, то при создании поля:
ALTER TABLE <TableName> ADD <FieldName> VARCHAR(10) COLLATE DE_DE;
Спасибо заработало интеерсно что кодировка смой базы осталась WIN1252 и данные были введены ещё в ней. Вопрос надо ли пересоздать базу с кодировкой ISO8859_1 или можно использовать базу созданную с WIN1252 и просто использовать ISO8859_1 для коннекта?
Добавлено: 15 янв 2008, 18:10
SinDmit
Без понятия, но если посмотреть в системные таблицы RDB$CHARACTER_SETS и RDB$COLLATIONS, то увидишь, что DE_DE только для ISO8859_1
Добавлено: 15 янв 2008, 19:17
dgs
SinDmit писал(а):Без понятия, но если посмотреть в системные таблицы RDB$CHARACTER_SETS и RDB$COLLATIONS, то увидишь, что DE_DE только для ISO8859_1
Логично, DE_DE для 1252 не работает точно
Добавлено: 16 янв 2008, 11:53
SinDmit
кодировка базы влияет только на на создание строковых полей по умолчанию.
Имея базу одной кодировки, можно поля создавать в любой другой.
а дальше насколько помню, может и ошибаюсь:
Указывая кодировку при подключении, клиент (а может сервер) пытается правильно перекодировать содержимое текстовых полей в запрошенную кодировку. Тут лучше в книге от Борри почитать, у неё там это где-то было.
Добавлено: 16 янв 2008, 13:34
kdv
клиент указывает кодировку, а сервер пытается перекодировать.
если таблиц перекодировки из одной в другую нет - облом. Если есть - сконвертируется (например win1251 в koi8r и обратно).
Добавлено: 16 янв 2008, 14:24
dgs
kdv писал(а):клиент указывает кодировку, а сервер пытается перекодировать.
если таблиц перекодировки из одной в другую нет - облом. Если есть - сконвертируется (например win1251 в koi8r и обратно).
Спасибо!
Правлиьно я ли я вас что пока в настоящую работу база не запущена лучше пересоздать её с той кодировкой с которой она будет использоваться?
И второй почему всётаки не рабоатет запрос с умляутом в условии отбора, если использовать 1252 - хочется понять причину.
Добавлено: 16 янв 2008, 15:13
kdv
пока в настоящую работу база не запущена лучше пересоздать её с той кодировкой с которой она будет использоваться?
разумеется.
И второй почему всётаки не рабоатет запрос с умляутом в условии отбора
тут без понятия. возможно, 1252 хоть и "европейская", но не немецкая кодировка.