Страница 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 хоть и "европейская", но не немецкая кодировка.