22.3. ÐоддеÑжка кодиÑовок #
- 22.3.1. ÐоддеÑживаемÑе кодиÑовки
- 22.3.2. ÐаÑÑÑойка кодиÑовки
- 22.3.3. ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÐµÑекодиÑовка Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом и клиенÑом
- 22.3.4. ÐозможнÑе пеÑекодиÑовки набоÑов Ñимволов
- 22.3.5. ÐополниÑелÑнÑе иÑÑоÑники инÑоÑмаÑии
- 22.3.2. ÐаÑÑÑойка кодиÑовки
ÐоддеÑжка кодиÑовок в Postgres Pro позволÑÐµÑ Ñ
ÑаниÑÑ ÑекÑÑ Ð² ÑазлиÑнÑÑ
кодиÑовкаÑ
, вклÑÑÐ°Ñ Ð¾Ð´Ð½Ð¾Ð±Ð°Ð¹ÑовÑе кодиÑовки, Ñакие как вÑ
одÑÑие в ÑемейÑÑво ISO 8859 и многобайÑовÑе кодиÑовки, Ñакие как EUC (Extended Unix Code), UTF-8 и внÑÑÑенний код Mule. ÐÑе поддеÑживаемÑе кодиÑовки могÑÑ Ð¿ÑозÑаÑно иÑполÑзоваÑÑÑÑ ÐºÐ»Ð¸ÐµÐ½Ñами, но некоÑоÑÑе не поддеÑживаÑÑÑÑ ÑеÑвеÑом (в каÑеÑÑве ÑеÑвеÑной кодиÑовки). ÐодиÑовка по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ Ð¿Ñи иниÑиализаÑии клаÑÑеÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Postgres Pro пÑи помоÑи initdb. Ðна Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑеопÑеделена пÑи Ñоздании Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑÑо позволÑÐµÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÑколÑко баз даннÑÑ
Ñ ÑазнÑми кодиÑовками.
ÐажнÑм огÑаниÑением, однако, ÑвлÑеÑÑÑ Ñо, ÑÑо кодиÑовка каждой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
должна бÑÑÑ ÑовмеÑÑима Ñ Ð¿Ð°ÑамеÑÑами локали Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
LC_CTYPE (клаÑÑиÑикаÑÐ¸Ñ Ñимволов) и LC_COLLATE (поÑÑдок ÑоÑÑиÑовки ÑÑÑок). ÐÐ»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ C или POSIX подойдÑÑ Ð»Ñбой Ð½Ð°Ð±Ð¾Ñ Ñимволов, но Ð´Ð»Ñ Ð´ÑÑгиÑ
локалей, пÑедоÑÑавлÑемÑÑ
библиоÑекой libc, еÑÑÑ ÑолÑко один Ð½Ð°Ð±Ð¾Ñ Ñимволов, коÑоÑÑй бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð¿ÑавилÑно. (Ðднако в ÑÑеде Windows кодиÑовка UTF-8 Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ñ Ð»Ñбой локалÑÑ.) ÐÑли Ñ Ð²Ð°Ñ Ð²ÐºÐ»ÑÑена поддеÑжка ICU, локали, пÑедоÑÑавлÑемÑе библиоÑекой ICU, можно иÑполÑзоваÑÑ Ñ Ð±Ð¾Ð»ÑÑинÑÑвом (но не вÑеми) кодиÑовками на ÑÑоÑоне ÑеÑвеÑа.
22.3.1. ÐоддеÑживаемÑе кодиÑовки #
ТаблиÑа 22.3 показÑÐ²Ð°ÐµÑ ÐºÐ¾Ð´Ð¸Ñовки, доÑÑÑпнÑе Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Postgres Pro.
ТаблиÑа 22.3. ÐодиÑовки Postgres Pro
| ÐÐ¼Ñ | ÐпиÑание | ЯзÑк | ÐоддеÑжка на ÑеÑвеÑе | ICU? | ÐÐ°Ð¹Ñ Ð½Ð° Ñимвол | ÐÑÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼Ñ |
|---|---|---|---|---|---|---|
BIG5 | Big Five | ТÑадиÑионнÑе киÑайÑкие иеÑоглиÑÑ | ÐÐµÑ | ÐÐµÑ | 1â2 | WIN950, Windows950 |
EUC_CN | Extended UNIX Code-CN | УпÑоÑÑннÑе киÑайÑкие иеÑоглиÑÑ | Ðа | Ðа | 1â3 |  |
EUC_JP | Extended UNIX Code-JP | ЯпонÑкий | Ðа | Ðа | 1â3 |  |
EUC_JIS_2004 | Extended UNIX Code-JP, JIS X 0213 | ЯпонÑкий | Ðа | ÐÐµÑ | 1â3 |  |
EUC_KR | Extended UNIX Code-KR | ÐоÑейÑкий | Ðа | Ðа | 1â3 |  |
EUC_TW | Extended UNIX Code-TW | ТÑадиÑионнÑе киÑайÑкие иеÑоглиÑÑ, ÑайванÑÑкий | Ðа | Ðа | 1â4 |  |
GB18030 | ÐаÑионалÑнÑй ÑÑандаÑÑ | ÐиÑайÑкий | ÐÐµÑ | ÐÐµÑ | 1â4 |  |
GBK | РаÑÑиÑеннÑй наÑионалÑнÑй ÑÑандаÑÑ | УпÑоÑÑннÑе киÑайÑкие иеÑоглиÑÑ | ÐÐµÑ | ÐÐµÑ | 1â2 | WIN936, Windows936 |
ISO_8859_5 | ISO 8859-5, ECMA 113 | ÐаÑинÑкий/ÐиÑиллиÑа | Ðа | Ðа | 1 |  |
ISO_8859_6 | ISO 8859-6, ECMA 114 | ÐаÑинÑкий/ÐÑабÑкий | Ðа | Ðа | 1 |  |
ISO_8859_7 | ISO 8859-7, ECMA 118 | ÐаÑинÑкий/ÐÑеÑеÑкий | Ðа | Ðа | 1 |  |
ISO_8859_8 | ISO 8859-8, ECMA 121 | ÐаÑинÑкий/ÐвÑÐ¸Ñ | Ðа | Ðа | 1 |  |
JOHAB | JOHAB | ÐоÑейÑкий (ХангÑлÑ) | ÐÐµÑ | ÐÐµÑ | 1â3 |  |
KOI8R | KOI8-R | ÐиÑиллиÑа (Ð ÑÑÑкий) | Ðа | Ðа | 1 | KOI8 |
KOI8U | KOI8-U | ÐиÑиллиÑа (УкÑаинÑкий) | Ðа | Ðа | 1 |  |
LATIN1 | ISO 8859-1, ECMA 94 | ÐападноâевÑопейÑкие | Ðа | Ðа | 1 | ISO88591 |
LATIN2 | ISO 8859-2, ECMA 94 | ЦенÑÑалÑноâевÑопейÑкие | Ðа | Ðа | 1 | ISO88592 |
LATIN3 | ISO 8859-3, ECMA 94 | ЮжноâевÑопейÑкие | Ðа | Ðа | 1 | ISO88593 |
LATIN4 | ISO 8859-4, ECMA 94 | СевеÑоâевÑопейÑкие | Ðа | Ðа | 1 | ISO88594 |
LATIN5 | ISO 8859-9, ECMA 128 | ТÑÑеÑкий | Ðа | Ðа | 1 | ISO88599 |
LATIN6 | ISO 8859-10, ECMA 144 | СкандинавÑкие | Ðа | Ðа | 1 | ISO885910 |
LATIN7 | ISO 8859-13 | ÐалÑийÑкие | Ðа | Ðа | 1 | ISO885913 |
LATIN8 | ISO 8859-14 | ÐелÑÑÑкие | Ðа | Ðа | 1 | ISO885914 |
LATIN9 | ISO 8859-15 | LATIN1 Ñо знаком евÑо и диакÑиÑиÑеÑкими знаками | Ðа | Ðа | 1 | ISO885915 |
LATIN10 | ISO 8859-16, ASRO SR 14111 | Ð ÑмÑнÑкий | Ðа | ÐÐµÑ | 1 | ISO885916 |
MULE_INTERNAL | ÐнÑÑÑенний код Mule | ÐÑлÑÑиÑзÑÑнÑй ÑедакÑÐ¾Ñ Emacs | Ðа | ÐÐµÑ | 1â4 |  |
SJIS | Shift JIS | ЯпонÑкий | ÐÐµÑ | ÐÐµÑ | 1â2 | Mskanji, ShiftJIS, WIN932, Windows932 |
SHIFT_JIS_2004 | Shift JIS, JIS X 0213 | ЯпонÑкий | ÐÐµÑ | ÐÐµÑ | 1â2 |  |
SQL_ASCII | не Ñказан (Ñм. ÑекÑÑ) | any | Ðа | ÐÐµÑ | 1 |  |
UHC | УниÑиÑиÑованнÑй код ХангÑÐ»Ñ | ÐоÑейÑкий | ÐÐµÑ | ÐÐµÑ | 1â2 | WIN949, Windows949 |
UTF8 | Unicode, 8-bit | вÑе | Ðа | Ðа | 1â4 | Unicode |
WIN866 | Windows CP866 | ÐиÑиллиÑа | Ðа | Ðа | 1 | ALT |
WIN874 | Windows CP874 | ТайÑкий | Ðа | ÐÐµÑ | 1 |  |
WIN1250 | Windows CP1250 | ЦенÑÑалÑноâевÑопейÑкие | Ðа | Ðа | 1 |  |
WIN1251 | Windows CP1251 | ÐиÑиллиÑа | Ðа | Ðа | 1 | WIN |
WIN1252 | Windows CP1252 | ÐападноâевÑопейÑкие | Ðа | Ðа | 1 |  |
WIN1253 | Windows CP1253 | ÐÑеÑеÑкий | Ðа | Ðа | 1 |  |
WIN1254 | Windows CP1254 | ТÑÑеÑкий | Ðа | Ðа | 1 |  |
WIN1255 | Windows CP1255 | ÐвÑÐ¸Ñ | Ðа | Ðа | 1 |  |
WIN1256 | Windows CP1256 | ÐÑабÑкий | Ðа | Ðа | 1 |  |
WIN1257 | Windows CP1257 | ÐалÑийÑкие | Ðа | Ðа | 1 |  |
WIN1258 | Windows CP1258 | ÐÑеÑнамÑкий | Ðа | Ðа | 1 | ABC, TCVN, TCVN5712, VSCII |
Ðе вÑе клиенÑÑкие API поддеÑживаÑÑ Ð²Ñе пеÑеÑиÑленнÑе кодиÑовки. ÐапÑимеÑ, дÑÐ°Ð¹Ð²ÐµÑ Ð¸Ð½ÑеÑÑейÑа JDBC Postgres Pro не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ MULE_INTERNAL, LATIN6, LATIN8 и LATIN10.
Ðоведение кодиÑовки SQL_ASCII ÑÑÑеÑÑвенно оÑлиÑаеÑÑÑ Ð¾Ñ Ð´ÑÑгиÑ
. Ðогда набоÑом Ñимволов ÑеÑвеÑа ÑвлÑеÑÑÑ SQL_ASCII, ÑеÑÐ²ÐµÑ Ð¸Ð½ÑеÑпÑеÑиÑÑÐµÑ Ð±Ð°Ð¹ÑовÑе знаÑÐµÐ½Ð¸Ñ 0â127 ÑоглаÑно кодиÑовке ASCII, Ñогда как знаÑÐµÐ½Ð¸Ñ 128â255 воÑпÑинимаÑÑÑÑ ÐºÐ°Ðº незнаÑимÑе. ÐеÑекодиÑовка не бÑÐ´ÐµÑ Ð²Ñполнена пÑи вÑбоÑе SQL_ASCII. Таким обÑазом, ÑÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ ÑвлÑеÑÑÑ Ð½Ðµ ÑÑолÑко обÑÑвлением Ñого, ÑÑо иÑполÑзÑеÑÑÑ Ð¾Ð¿ÑеделÑÐ½Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка, ÑколÑко обÑÑвлением Ñого, ÑÑо кодиÑовка игноÑиÑÑеÑÑÑ. РболÑÑинÑÑве ÑлÑÑаев, еÑли Ð²Ñ ÑабоÑаеÑе Ñ Ð»ÑбÑми даннÑми, оÑлиÑнÑми Ð¾Ñ ASCII, не ÑÑÐ¾Ð¸Ñ Ð¸ÑполÑзоваÑÑ SQL_ASCII, Ñак как Postgres Pro не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑеобÑазоваÑÑ Ð¸Ð»Ð¸ пÑовеÑиÑÑ ÑимволÑ, оÑлиÑнÑе Ð¾Ñ ASCII.
22.3.2. ÐаÑÑÑойка кодиÑовки #
initdb опÑеделÑÐµÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑеÑа Postgres Pro. ÐапÑимеÑ,
initdb -E EUC_JP
наÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð° EUC_JP (РаÑÑиÑÐµÐ½Ð½Ð°Ñ ÑиÑÑема кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑпонÑкого ÑзÑка). Ðожно иÑполÑзоваÑÑ --encoding вмеÑÑо -E в ÑлÑÑае пÑедпоÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ длиннÑÑ
имÑн паÑамеÑÑов. ÐÑли паÑамеÑÑ -E или --encoding не задан, initdb пÑÑаеÑÑÑ Ð¾Ð¿ÑеделиÑÑ Ð¿Ð¾Ð´Ñ
одÑÑÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð² завиÑимоÑÑи Ð¾Ñ Ñказанной или заданной по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸.
ÐÑи Ñоздании Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑказаÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ, оÑлиÑнÑÑ Ð¾Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ по ÑмолÑаниÑ, еÑли ÑÑа кодиÑовка ÑовмеÑÑима Ñ Ð²ÑбÑанной локалÑÑ:
createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
ÐÑо ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ korean, коÑоÑÐ°Ñ Ð¸ÑполÑзÑÐµÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ EUC_KR и Ð»Ð¾ÐºÐ°Ð»Ñ ko_KR. Также, полÑÑиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ SQL-командÑ:
CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
ÐамеÑÑÑе, ÑÑо пÑиведÑннÑе вÑÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð´Ð°ÑÑ ÐºÐ¾Ð¿Ð¸Ñование Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
template0. ÐÑи копиÑовании лÑбой дÑÑгой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, паÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸ и кодиÑÐ¾Ð²ÐºÑ Ð¸ÑÑ
одной Ð±Ð°Ð·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð½ÐµÐ»ÑзÑ, Ñак как ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к иÑÐºÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðолее подÑобное опиÑание пÑиведено в Разделе 21.3.
ÐодиÑовка Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñ
ÑаниÑÑÑ Ð² ÑиÑÑемном каÑалоге pg_database. ÐÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑвидеÑÑ Ð¿Ñи помоÑи паÑамеÑÑа psql -l или ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ \l.
$ psql -l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access Privileges
-----------+----------+-----------+-------------+-------------+-------------------------------------
clocaledb | hlinnaka | SQL_ASCII | C | C |
englishdb | hlinnaka | UTF8 | en_GB.UTF8 | en_GB.UTF8 |
japanese | hlinnaka | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 |
korean | hlinnaka | EUC_KR | ko_KR.euckr | ko_KR.euckr |
postgres | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 |
template0 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
template1 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
(7 rows)
Ðажно
Ðа болÑÑинÑÑве ÑовÑеменнÑÑ
опеÑаÑионнÑÑ
ÑиÑÑем Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ, ÐºÐ°ÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка подÑазÑмеваеÑÑÑ Ð¿Ð°ÑамеÑÑом LC_CTYPE, ÑÑо обеÑпеÑÐ¸Ñ Ð¸ÑполÑзование ÑолÑко ÑооÑвеÑÑÑвÑÑÑей кодиÑовки Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðа более ÑÑаÑÑÑ
ÑиÑÑемаÑ
необÑ
одимо ÑамоÑÑоÑÑелÑно ÑледиÑÑ Ð·Ð° Ñем, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзовалаÑÑ ÐºÐ¾Ð´Ð¸Ñовка, ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð²ÑбÑанной ÑзÑковой ÑÑеде. ÐÑибка в ÑÑой облаÑÑи, ÑкоÑее вÑего, пÑиведÑÑ Ðº ÑÑÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимÑÑ
Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ опеÑаÑий, ÑакиÑ
как ÑоÑÑиÑовка.
Postgres Pro Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑÑпеÑполÑзоваÑелÑм ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñ ÐºÐ¾Ð´Ð¸Ñовкой SQL_ASCII, даже когда знаÑение LC_CTYPE не ÑÑÑановлено в C или POSIX. Ðак бÑло Ñказано вÑÑе, SQL_ASCII не гаÑанÑиÑÑеÑ, ÑÑо даннÑе, Ñ
ÑанÑÑиеÑÑ Ð² базе, имеÑÑ Ð¾Ð¿ÑеделÑннÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ, и Ñаким обÑазом, ÑÑÐ¾Ñ Ð²ÑÐ±Ð¾Ñ ÑÑÐµÐ²Ð°Ñ ÑбоÑми, ÑвÑзаннÑми Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ. ÐÑполÑзование данной комбинаÑии ÑÑÑаÑело и, возможно, бÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð¿ÑеÑено.
22.3.3. ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÐµÑекодиÑовка Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом и клиенÑом #
Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкое пеÑекодиÑование Ñимволов Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом и клиенÑов Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑоÑеÑаний кодиÑовок (они пеÑеÑиÑлÑÑÑÑÑ Ð² ÐодÑазделе 22.3.4).
ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ Ð¿ÐµÑекодиÑÐ¾Ð²ÐºÑ Ñимволов, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑообÑиÑÑ Postgres Pro кодиÑовкÑ, коÑоÑÑÑ Ð²Ñ Ñ Ð¾Ñели Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð½Ð° ÑÑоÑоне клиенÑа. ÐÑо можно вÑполниÑÑ Ð½ÐµÑколÑкими ÑпоÑобами:
ÐÑполÑзование командÑ
\encodingв psql.\encodingпозволÑÐµÑ Ð¾Ð¿ÐµÑаÑивно изменÑÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑкÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð½Ð°SJIS, введиÑе:\encoding SJIS
libpq (Раздел 33.11) Ð¸Ð¼ÐµÐµÑ ÑÑнкÑии, Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑкой кодиÑовкой.
ÐÑполÑзование
SET client_encoding TO. ÐлиенÑÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка ÑÑÑанавливаеÑÑÑ ÑледÑÑÑей SQL-командой:SET CLIENT_ENCODING TO '
value';Также, Ð´Ð»Ñ ÑÑой Ñели можно иÑполÑзоваÑÑ ÑÑандаÑÑнÑй ÑинÑакÑÐ¸Ñ SQL
SET NAMES:SET NAMES '
value';ÐолÑÑиÑÑ ÑекÑÑÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑкÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ:
SHOW client_encoding;
ÐеÑнÑÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ÑмолÑаниÑ:
RESET client_encoding;
ÐÑполÑзование
PGCLIENTENCODING. ÐÑли ÑÑÑановлена пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑPGCLIENTENCODING, Ñо ÑÑа клиенÑÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка вÑбиÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑи подклÑÑении к ÑеÑвеÑÑ. (РдалÑнейÑем ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑеопÑеделено пÑи помоÑи лÑбого из меÑодов, ÑказаннÑÑ Ð²ÑÑе.)ÐÑполÑзование пеÑеменной конÑигÑÑаÑии client_encoding. ÐÑли задана пеÑеменнаÑ
client_encoding, ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка вÑбиÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑи подклÑÑении к ÑеÑвеÑÑ. (РдалÑнейÑем ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑеопÑеделено пÑи помоÑи лÑбого из меÑодов, ÑказаннÑÑ Ð²ÑÑе.)
ÐÑли пеÑекодиÑовка опÑеделÑнного Ñимвола невозможна (пÑедположим, вÑбÑÐ°Ð½Ñ EUC_JP Ð´Ð»Ñ ÑеÑвеÑа и LATIN1 Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñа, и пеÑедаÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑпонÑкие иеÑоглиÑÑ, не пÑедÑÑавленнÑе в LATIN1), Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка.
ÐÑли клиенÑÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка опÑеделена как SQL_ASCII, пеÑекодиÑовка оÑклÑÑаеÑÑÑ Ð²Ð½Ðµ завиÑимоÑÑи Ð¾Ñ ÐºÐ¾Ð´Ð¸Ñовки ÑеÑвеÑа. (Ðднако еÑли ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка оÑлиÑна Ð¾Ñ SQL_ASCII, ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ñем не менее пÑовеÑÑÑÑ, ÑÑо вÑ
одÑÑие даннÑе ÑвлÑÑÑÑÑ Ð´Ð¾Ð¿ÑÑÑимÑми Ð´Ð»Ñ ÐµÐ³Ð¾ кодиÑовки; поÑÑÐ¾Ð¼Ñ Ð¸ÑоговÑй ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ñем же, ÑÑо и пÑи Ñовпадении клиенÑÑкой кодиÑовки Ñ ÑеÑвеÑной.) Ðа ÑеÑвеÑе же иÑполÑзоваÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ SQL_ASCII неÑазÑмно, кÑоме ÑлÑÑаев, когда вÑе ваÑи даннÑе полноÑÑÑÑ Ð²Ð¿Ð¸ÑÑваÑÑÑÑ Ð² ASCII.
22.3.4. ÐозможнÑе пеÑекодиÑовки набоÑов Ñимволов #
Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑекодиÑование Ð¼ÐµÐ¶Ð´Ñ Ð»ÑбÑми двÑÐ¼Ñ Ð½Ð°Ð±Ð¾Ñами Ñимволов, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
в ÑиÑÑемном каÑалоге pg_conversion пÑиÑÑÑÑÑвÑÐµÑ ÑÑнкÑÐ¸Ñ Ð¿ÐµÑекодиÑованиÑ. Postgres Pro вклÑÑÐ°ÐµÑ Ð½ÐµÑколÑко пÑедопÑеделÑннÑÑ
пеÑекодиÑовок, ÑведÑннÑÑ
в ТаблиÑе 22.4 и опиÑаннÑÑ
подÑобнее в ТаблиÑе 22.5. ÐÑоме ÑÑого, еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ Ð¿ÐµÑекодиÑовкÑ, иÑполÑзÑÑ SQL-ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE CONVERSION. (ЧÑÐ¾Ð±Ñ Ð¾Ð½Ð° иÑполÑзовалаÑÑ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого пеÑекодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑекÑÑа Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом и клиенÑом, она должна бÑÑÑ Ð¿Ð¾Ð¼ÐµÑена как пеÑекодиÑовка «по ÑмолÑаниÑ» Ð´Ð»Ñ Ñвоей паÑÑ ÐºÐ¾Ð´Ð¸Ñовок.)
ТаблиÑа 22.4. ÐÑÑÑоеннÑе клиенÑ-ÑеÑвеÑнÑе пеÑекодиÑовки набоÑов Ñимволов
| СеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка | ÐоÑÑÑпнÑе клиенÑÑкие кодиÑовки |
|---|---|
BIG5 | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
EUC_CN | EUC_CN, MULE_INTERNAL, UTF8 |
EUC_JP | EUC_JP, MULE_INTERNAL, SJIS, UTF8 |
EUC_JIS_2004 | EUC_JIS_2004, SHIFT_JIS_2004, UTF8 |
EUC_KR | EUC_KR, MULE_INTERNAL, UTF8 |
EUC_TW | EUC_TW, BIG5, MULE_INTERNAL, UTF8 |
GB18030 | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
GBK | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
ISO_8859_5 | ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866, WIN1251 |
ISO_8859_6 | ISO_8859_6, UTF8 |
ISO_8859_7 | ISO_8859_7, UTF8 |
ISO_8859_8 | ISO_8859_8, UTF8 |
JOHAB | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
KOI8R | KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251 |
KOI8U | KOI8U, UTF8 |
LATIN1 | LATIN1, MULE_INTERNAL, UTF8 |
LATIN2 | LATIN2, MULE_INTERNAL, UTF8, WIN1250 |
LATIN3 | LATIN3, MULE_INTERNAL, UTF8 |
LATIN4 | LATIN4, MULE_INTERNAL, UTF8 |
LATIN5 | LATIN5, UTF8 |
LATIN6 | LATIN6, UTF8 |
LATIN7 | LATIN7, UTF8 |
LATIN8 | LATIN8, UTF8 |
LATIN9 | LATIN9, UTF8 |
LATIN10 | LATIN10, UTF8 |
MULE_INTERNAL | MULE_INTERNAL, BIG5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8R, LATIN1 to LATIN4, SJIS, WIN866, WIN1250, WIN1251 |
SJIS | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
SHIFT_JIS_2004 | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
SQL_ASCII | лÑÐ±Ð°Ñ (пеÑекодиÑовка не бÑÐ´ÐµÑ Ð²Ñполнена) |
UHC | не поддеÑживаеÑÑÑ ÐºÐ°Ðº ÑеÑвеÑÐ½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
UTF8 | вÑе поддеÑживаемÑе кодиÑовки |
WIN866 | WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251 |
WIN874 | WIN874, UTF8 |
WIN1250 | WIN1250, LATIN2, MULE_INTERNAL, UTF8 |
WIN1251 | WIN1251, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866 |
WIN1252 | WIN1252, UTF8 |
WIN1253 | WIN1253, UTF8 |
WIN1254 | WIN1254, UTF8 |
WIN1255 | WIN1255, UTF8 |
WIN1256 | WIN1256, UTF8 |
WIN1257 | WIN1257, UTF8 |
WIN1258 | WIN1258, UTF8 |
ТаблиÑа 22.5. ÐÑе вÑÑÑоеннÑе пеÑекодиÑовки набоÑов Ñимволов
| ÐÐ¼Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ [a] | ÐÑÑ Ð¾Ð´Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка | Ð¦ÐµÐ»ÐµÐ²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
|---|---|---|
big5_to_euc_tw | BIG5 | EUC_TW |
big5_to_mic | BIG5 | MULE_INTERNAL |
big5_to_utf8 | BIG5 | UTF8 |
euc_cn_to_mic | EUC_CN | MULE_INTERNAL |
euc_cn_to_utf8 | EUC_CN | UTF8 |
euc_jp_to_mic | EUC_JP | MULE_INTERNAL |
euc_jp_to_sjis | EUC_JP | SJIS |
euc_jp_to_utf8 | EUC_JP | UTF8 |
euc_kr_to_mic | EUC_KR | MULE_INTERNAL |
euc_kr_to_utf8 | EUC_KR | UTF8 |
euc_tw_to_big5 | EUC_TW | BIG5 |
euc_tw_to_mic | EUC_TW | MULE_INTERNAL |
euc_tw_to_utf8 | EUC_TW | UTF8 |
gb18030_to_utf8 | GB18030 | UTF8 |
gbk_to_utf8 | GBK | UTF8 |
iso_8859_10_to_utf8 | LATIN6 | UTF8 |
iso_8859_13_to_utf8 | LATIN7 | UTF8 |
iso_8859_14_to_utf8 | LATIN8 | UTF8 |
iso_8859_15_to_utf8 | LATIN9 | UTF8 |
iso_8859_16_to_utf8 | LATIN10 | UTF8 |
iso_8859_1_to_mic | LATIN1 | MULE_INTERNAL |
iso_8859_1_to_utf8 | LATIN1 | UTF8 |
iso_8859_2_to_mic | LATIN2 | MULE_INTERNAL |
iso_8859_2_to_utf8 | LATIN2 | UTF8 |
iso_8859_2_to_windows_1250 | LATIN2 | WIN1250 |
iso_8859_3_to_mic | LATIN3 | MULE_INTERNAL |
iso_8859_3_to_utf8 | LATIN3 | UTF8 |
iso_8859_4_to_mic | LATIN4 | MULE_INTERNAL |
iso_8859_4_to_utf8 | LATIN4 | UTF8 |
iso_8859_5_to_koi8_r | ISO_8859_5 | KOI8R |
iso_8859_5_to_mic | ISO_8859_5 | MULE_INTERNAL |
iso_8859_5_to_utf8 | ISO_8859_5 | UTF8 |
iso_8859_5_to_windows_1251 | ISO_8859_5 | WIN1251 |
iso_8859_5_to_windows_866 | ISO_8859_5 | WIN866 |
iso_8859_6_to_utf8 | ISO_8859_6 | UTF8 |
iso_8859_7_to_utf8 | ISO_8859_7 | UTF8 |
iso_8859_8_to_utf8 | ISO_8859_8 | UTF8 |
iso_8859_9_to_utf8 | LATIN5 | UTF8 |
johab_to_utf8 | JOHAB | UTF8 |
koi8_r_to_iso_8859_5 | KOI8R | ISO_8859_5 |
koi8_r_to_mic | KOI8R | MULE_INTERNAL |
koi8_r_to_utf8 | KOI8R | UTF8 |
koi8_r_to_windows_1251 | KOI8R | WIN1251 |
koi8_r_to_windows_866 | KOI8R | WIN866 |
koi8_u_to_utf8 | KOI8U | UTF8 |
mic_to_big5 | MULE_INTERNAL | BIG5 |
mic_to_euc_cn | MULE_INTERNAL | EUC_CN |
mic_to_euc_jp | MULE_INTERNAL | EUC_JP |
mic_to_euc_kr | MULE_INTERNAL | EUC_KR |
mic_to_euc_tw | MULE_INTERNAL | EUC_TW |
mic_to_iso_8859_1 | MULE_INTERNAL | LATIN1 |
mic_to_iso_8859_2 | MULE_INTERNAL | LATIN2 |
mic_to_iso_8859_3 | MULE_INTERNAL | LATIN3 |
mic_to_iso_8859_4 | MULE_INTERNAL | LATIN4 |
mic_to_iso_8859_5 | MULE_INTERNAL | ISO_8859_5 |
mic_to_koi8_r | MULE_INTERNAL | KOI8R |
mic_to_sjis | MULE_INTERNAL | SJIS |
mic_to_windows_1250 | MULE_INTERNAL | WIN1250 |
mic_to_windows_1251 | MULE_INTERNAL | WIN1251 |
mic_to_windows_866 | MULE_INTERNAL | WIN866 |
sjis_to_euc_jp | SJIS | EUC_JP |
sjis_to_mic | SJIS | MULE_INTERNAL |
sjis_to_utf8 | SJIS | UTF8 |
windows_1258_to_utf8 | WIN1258 | UTF8 |
uhc_to_utf8 | UHC | UTF8 |
utf8_to_big5 | UTF8 | BIG5 |
utf8_to_euc_cn | UTF8 | EUC_CN |
utf8_to_euc_jp | UTF8 | EUC_JP |
utf8_to_euc_kr | UTF8 | EUC_KR |
utf8_to_euc_tw | UTF8 | EUC_TW |
utf8_to_gb18030 | UTF8 | GB18030 |
utf8_to_gbk | UTF8 | GBK |
utf8_to_iso_8859_1 | UTF8 | LATIN1 |
utf8_to_iso_8859_10 | UTF8 | LATIN6 |
utf8_to_iso_8859_13 | UTF8 | LATIN7 |
utf8_to_iso_8859_14 | UTF8 | LATIN8 |
utf8_to_iso_8859_15 | UTF8 | LATIN9 |
utf8_to_iso_8859_16 | UTF8 | LATIN10 |
utf8_to_iso_8859_2 | UTF8 | LATIN2 |
utf8_to_iso_8859_3 | UTF8 | LATIN3 |
utf8_to_iso_8859_4 | UTF8 | LATIN4 |
utf8_to_iso_8859_5 | UTF8 | ISO_8859_5 |
utf8_to_iso_8859_6 | UTF8 | ISO_8859_6 |
utf8_to_iso_8859_7 | UTF8 | ISO_8859_7 |
utf8_to_iso_8859_8 | UTF8 | ISO_8859_8 |
utf8_to_iso_8859_9 | UTF8 | LATIN5 |
utf8_to_johab | UTF8 | JOHAB |
utf8_to_koi8_r | UTF8 | KOI8R |
utf8_to_koi8_u | UTF8 | KOI8U |
utf8_to_sjis | UTF8 | SJIS |
utf8_to_windows_1258 | UTF8 | WIN1258 |
utf8_to_uhc | UTF8 | UHC |
utf8_to_windows_1250 | UTF8 | WIN1250 |
utf8_to_windows_1251 | UTF8 | WIN1251 |
utf8_to_windows_1252 | UTF8 | WIN1252 |
utf8_to_windows_1253 | UTF8 | WIN1253 |
utf8_to_windows_1254 | UTF8 | WIN1254 |
utf8_to_windows_1255 | UTF8 | WIN1255 |
utf8_to_windows_1256 | UTF8 | WIN1256 |
utf8_to_windows_1257 | UTF8 | WIN1257 |
utf8_to_windows_866 | UTF8 | WIN866 |
utf8_to_windows_874 | UTF8 | WIN874 |
windows_1250_to_iso_8859_2 | WIN1250 | LATIN2 |
windows_1250_to_mic | WIN1250 | MULE_INTERNAL |
windows_1250_to_utf8 | WIN1250 | UTF8 |
windows_1251_to_iso_8859_5 | WIN1251 | ISO_8859_5 |
windows_1251_to_koi8_r | WIN1251 | KOI8R |
windows_1251_to_mic | WIN1251 | MULE_INTERNAL |
windows_1251_to_utf8 | WIN1251 | UTF8 |
windows_1251_to_windows_866 | WIN1251 | WIN866 |
windows_1252_to_utf8 | WIN1252 | UTF8 |
windows_1256_to_utf8 | WIN1256 | UTF8 |
windows_866_to_iso_8859_5 | WIN866 | ISO_8859_5 |
windows_866_to_koi8_r | WIN866 | KOI8R |
windows_866_to_mic | WIN866 | MULE_INTERNAL |
windows_866_to_utf8 | WIN866 | UTF8 |
windows_866_to_windows_1251 | WIN866 | WIN |
windows_874_to_utf8 | WIN874 | UTF8 |
euc_jis_2004_to_utf8 | EUC_JIS_2004 | UTF8 |
utf8_to_euc_jis_2004 | UTF8 | EUC_JIS_2004 |
shift_jis_2004_to_utf8 | SHIFT_JIS_2004 | UTF8 |
utf8_to_shift_jis_2004 | UTF8 | SHIFT_JIS_2004 |
euc_jis_2004_to_shift_jis_2004 | EUC_JIS_2004 | SHIFT_JIS_2004 |
shift_jis_2004_to_euc_jis_2004 | SHIFT_JIS_2004 | EUC_JIS_2004 |
[a] Ðмена пÑеобÑазований ÑледÑÑÑ ÑÑандаÑÑной ÑÑ
еме именованиÑ. РоÑиÑиалÑÐ½Ð¾Ð¼Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ÑÑ
одной кодиÑовки, в коÑоÑом вÑе не алÑавиÑно-ÑиÑÑовÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑкиваниÑми, добавлÑеÑÑÑ | ||
22.3.5. ÐополниÑелÑнÑе иÑÑоÑники инÑоÑмаÑии #
РекомендÑемÑе иÑÑоÑники Ð´Ð»Ñ Ð½Ð°Ñала изÑÑÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ Ð²Ð¸Ð´Ð¾Ð² ÑиÑÑем кодиÑованиÑ.
- CJKV Information Processing: ÐбÑабоÑка инÑоÑмаÑии на киÑайÑком, ÑпонÑком, коÑейÑком & вÑеÑнамÑком ÑзÑкаÑ
СодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð´ÑобнÑе обÑÑÑÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾
EUC_JP,EUC_CN,EUC_KR,EUC_TW.- https://www.unicode.org/
Ð¡Ð°Ð¹Ñ Unicode Consortium.
- RFC 3629
UTF-8 (ÑоÑÐ¼Ð°Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ 8-биÑного UCS/Unicode) опÑеделÑн здеÑÑ.