Общие правила при работе с кириллическими символами
Отбросив различные нюансы можно кратко сформулировать следующие общие правила:
-
Для самой возможности работы с кириллицей для БД должны быть установлены кодировки, поддерживающие кириллицу:
set database default character set "KOI8-R"; set database names "KOI8-R";
Проверить установленные настройки можно выполнив запросы:
-
для пользовательских таблиц (если установлена по SET DATABASE DEFAULT CHARACTER SET):
select name from $$$charset where ident=(select getword($$$s14,134) from $$$sysrl where rowid=1);
-
для системных таблиц (если установлена по SET DATABASE NAMES):
select name from $$$charset where ident=(select getword($$$s14,116) from $$$sysrl where rowid=1);
Для установленных кодировок KOI8-R мы должны увидеть значения KOI8-R.
Для установленных кодировок CP1251 мы должны увидеть значения CP1251.
Если кодировки не были установлены, то мы получим пустые выборки.
-
-
Клиентская часть должна корректно устанавливать кодировку, в которой будет отправлять/получать данные.
При работе из клиентского приложения мы должны указать кодировку, в которой мы отправляем в СУБД данные – это можно сделать либо с помощью функций API, либо через переменную окружения LINTER_CP, или через команду "set names". СУБД сама cконвертирует данные из кодировки хранения в БД в нужную для клиента кодировку и обратно.
Если же мы не зададим кодировку явно, то она будет задана в соответствии с настроенным окружением операционной системы. Полагаться на окружение опасно, так как оно может быть разным на разных рабочих местах или версиях ОС.