FB и умляуты
FB и умляуты
Как правильно указать кодировку для базы что бы корректно вовдились итображались умляуты?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
А если указать NONE?Dimitry Sibiryakov писал(а):Спросить у немцев, какая кодовая страница у них установлена по умолчанию. Ну или абсолютное решение - уникод.
Чем отличается
SET NAMES NONE;
и
DEFAULT CHARACTER SET NONE;
?
ещё я так понмаю у меня будут проблемы с отображением умляутов на клиенте которого я планирую писать на делфи?
это команда ISQL. говорит чтобы isql в коннекте, который откроется СЛЕДОМ за этой командой, работал с символами в чарсете NONE.SET NAMES NONE;
это часть оператора create database. при которой указывается УМОЛЧАТЕЛЬНЫЙ чарсет, который используется при создании объектов, если у них чарсет не указан явно.DEFAULT CHARACTER SET NONE;
www.ibase.ru/devinfo/ibrusfaq.htm
правда тут про уникод почти ничего не сказано. надо будет добавить, т.к. в IB2007 и FB2 теперь нормальный уникод есть.
Создал базу FB embeded 2.03
SET SQL DIALECT 3;
SET NAMES WIN1252;
DEFAULT CHARACTER SET WIN1252;
Умляуты созраняются и отображаются нормально, но когда надо вести поиск по строке в которой есть умляут (делаю поиск разумеется select-ом) - результат всегда пустой, разумется поиск без умляутов работает отлично. Вопрос что делать что б селект у которого в условиях есть умлыту правильно отрабатывал.
Второй вопрос поскольку любимый тулз IB/FB - IBExpert так же не отображает умляуты у тексте запроса подскажите плиз как его натсроить чтоб отображал или посоветуйте другой инстурмент для отладки таких запросов. Спасибо!
SET SQL DIALECT 3;
SET NAMES WIN1252;
DEFAULT CHARACTER SET WIN1252;
Умляуты созраняются и отображаются нормально, но когда надо вести поиск по строке в которой есть умляут (делаю поиск разумеется select-ом) - результат всегда пустой, разумется поиск без умляутов работает отлично. Вопрос что делать что б селект у которого в условиях есть умлыту правильно отрабатывал.
Второй вопрос поскольку любимый тулз IB/FB - IBExpert так же не отображает умляуты у тексте запроса подскажите плиз как его натсроить чтоб отображал или посоветуйте другой инстурмент для отладки таких запросов. Спасибо!
Спасибо заработало интеерсно что кодировка смой базы осталась WIN1252 и данные были введены ещё в ней. Вопрос надо ли пересоздать базу с кодировкой ISO8859_1 или можно использовать базу созданную с WIN1252 и просто использовать ISO8859_1 для коннекта?SinDmit писал(а):немцы отвечают:![]()
SET NAMES ISO8859_1;
а чтобы правильно сортировалось, то при создании поля:
ALTER TABLE <TableName> ADD <FieldName> VARCHAR(10) COLLATE DE_DE;
кодировка базы влияет только на на создание строковых полей по умолчанию.
Имея базу одной кодировки, можно поля создавать в любой другой.
а дальше насколько помню, может и ошибаюсь:
Указывая кодировку при подключении, клиент (а может сервер) пытается правильно перекодировать содержимое текстовых полей в запрошенную кодировку. Тут лучше в книге от Борри почитать, у неё там это где-то было.
Имея базу одной кодировки, можно поля создавать в любой другой.
а дальше насколько помню, может и ошибаюсь:
Указывая кодировку при подключении, клиент (а может сервер) пытается правильно перекодировать содержимое текстовых полей в запрошенную кодировку. Тут лучше в книге от Борри почитать, у неё там это где-то было.
Спасибо!kdv писал(а):клиент указывает кодировку, а сервер пытается перекодировать.
если таблиц перекодировки из одной в другую нет - облом. Если есть - сконвертируется (например win1251 в koi8r и обратно).
Правлиьно я ли я вас что пока в настоящую работу база не запущена лучше пересоздать её с той кодировкой с которой она будет использоваться?
И второй почему всётаки не рабоатет запрос с умляутом в условии отбора, если использовать 1252 - хочется понять причину.