Oracle DB: кодировка

Материал из sysadm
Перейти к навигации Перейти к поиску

Определение кодировки базы и сопутствующих параметров

col parameter format a30;
SELECT * FROM NLS_DATABASE_PARAMETERS;

Кодировка базы определяется параметром NLS_CHARACTERSET, используется в полях с типом CHAR, VARCHAR2, CLOB.

В базе также определяется параметр NLS_NCHAR_CHARACTERSET (национальная кодировка), который определяет кодировку для полей типов NCHAR, NVARCHAR2, NCLOB. Поля данных типов могут содержать только UNICODE данные, поэтому для этого параметра допустимы только два варианта AL16UTF16 (по умолчанию) и UTF8.

Особенности UNICODE кодировок:

  • AL16UTF16 - все символы определяются двумя байтами
  • UTF8 - символы западноевропейских языков кодируются 1 байтом, символы восточноевропейских языков кодируются 2 байтами, символы азиатских языков кодируются 3-мя байтами

UTF8 позволяет уменьшить расход места, если данные содержат в основном западноевропейские тексты, при этом скорость поиска подстроки падает, т.к. размер символа имеет не фиксированную длину в байтах.