Общие правила при работе с кириллическими символами
Отбросив различные нюансы можно кратко сформулировать следующие общие правила:
-
Для самой возможности работы с кириллицей для БД должны быть установлены кодировки, поддерживающие кириллицу:
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конвертирует данные из кодировки хранения в БД в нужную для клиента кодировку и обратно.Если же мы не зададим кодировку явно, то она будет задана в соответствии с настроенным окружением операционной системы. Полагаться на окружение опасно, так как оно может быть разным на разных рабочих местах или версиях ОС.