Postgres pro szabvány dokumentáció 9

24.3. Támogatás a kódolások

Támogatja kódolás Postgres Pro lehetővé teszi, hogy tárolja a szöveget különböző kódolások, köztük egy byte-os kódolások, például a család tagjai az ISO 8859 és a több-bájtos kódolás, mint az EUC (Extended Unix-kód), az UTF-8 és Mule belső kódot. Minden támogatott kódolások is átlátható az ügyfelek által használt, de néhány nem támogatja a szerver (mint a szerver kódolás). Az alapértelmezett kódolás van kiválasztva inicializálása során a klaszter Postgres Pro adatbázis használatával initdb. Meg lehet felülbírálni, ha egy adatbázis létrehozása, amely lehetővé teszi, hogy több adatbázis különböző karaktereket.

Egy fontos korlátozás, azonban az, hogy a kódolási egyes adatbázis összeegyeztethetőnek kell lennie a paraméterek területi LC_CTYPE adatbázis (osztályozás szimbólumok) és LC_COLLATE (rendezési sorrendje a sorok). C vagy POSIX locale segítségével bármilyen karakterkészlet, de más helyszíneken csak egy kódolási, hogy működni fog-e. (Ugyanakkor a környezetben a Windows kódolás UTF-8 is használható bármilyen beállítás.)

24.3.1. támogatott kódolások

Táblázat 24.1 bemutatja a kódolás áll a használatra Postgres Pro.

Táblázat 24.1. Kódolás Postgres Pro

Támogatás a kiszolgálón

Bájtot karakter

Hagyományos kínai karakterek

Bővített UNIX Code-CN

Egyszerűsített kínai karakterek

Bővített UNIX Code-JP

Bővített UNIX Code-JP, JIS X 0213

Bővített UNIX Code-KR

Bővített UNIX Code-TW

A hagyományos kínai karakterek, tajvani

Részletes nemzeti szabvány

Egyszerűsített kínai karakterek

ISO 8859-5, ECMA 113

ISO 8859-6, ECMA 114

ISO 8859-7, ECMA 118

ISO 8859-8, ECMA 121

ISO 8859-1, ECMA 94

ISO 8859-2, ECMA 94

ISO 8859-3, ECMA 94

ISO 8859-4, ECMA 94

ISO 8859-9, ECMA 128

ISO 8859-10, ECMA 144

Latin1 c európai nyelvek és nyelvjárások

ISO 8859-16, ASRO SR 14111

Mule belső kód

Mskanji. ShiftJIS. WIN932. Windows932

Shift JIS, JIS X 0213

Ismeretlen (cm. Szöveg)

Egységes hangul Code

ABC. TCVN. TCVN5712. VSCII

Nem minden ügyfél API támogatja ezen kódolási. Például JDBC Postgres Pro interfész meghajtó nem támogatja MULE_INTERNAL. LATIN6. LATIN8 és LATIN10.

24.3.2. kódolási beállítás

initdb meghatározza az alapértelmezett karakterkódolást Postgres Pro klaszter. Például,

beállítja az alapértelmezett kódolást EUC_JP (Extended kódolási rendszert a japán nyelv). Ezt fel lehet használni, hanem --encoding -E esetében hosszabb preferencia paraméter neveket. Ha a paraméter -E vagy --encoding nincs megadva, initdb megpróbálja meghatározni a megfelelő kódolási függően a megadott, vagy az alapértelmezett beállításokkal.

Amikor létrehoz egy adatbázist, akkor a kódolást, amely eltér az alapértelmezett, ha a kódolás kompatibilis a kiválasztott locale:

Ez létrehoz egy adatbázist nevű koreai. mely a kódolás és területi EUC_KR ko_KR. Is, akkor a kívánt eredményt segítségével az SQL-parancsot:

adatbázis kódolása a rendszerben tárolt katalógusban pg_database. Látható a psql -l opció vagy command \ l.

A legtöbb modern Postgres Pro operációs rendszer meg tudja határozni, melyik karakter értünk LC_CTYPE beállítást. amely biztosítja, hogy csak a megfelelő adatbázis kódolás. A régebbi rendszerek, akkor függetlenül biztosítják, hogy a kódolást használunk, akkor megfelel a kiválasztott nyelvi közegben. A hiba ezen a területen valószínűleg furcsa viselkedését locale-függő műveletek, mint a válogatás.

Postgres Pro lehetővé teszi, hogy a felettes adatbázisokat létrehozni a kódoló SQL_ASCII. akkor is, ha LC_CTYPE érték a C vagy POSIX. Mint már említettük, SQL_ASCII nem garantálja, hogy a tárolt adatok az adatbázisban egy bizonyos karakterkódolás és így ez a lehetőség tele van kudarcok kapcsolódó locale. Ezzel kombinációja dátum és lehet teljesen tilos.

24.3.3. Automatikus kódkonverzió szerver és kliens közötti

Postgres Pro támogatja az automatikus kódkonverzió szerver és kliens közötti bizonyos karakterkészletek kombinációk. Tájékoztatás a konverzió a rendszerben tárolt katalógusban pg_conversion. Postgres Pro tartalmaz néhány előre meghatározott kódolási, táblázatban bemutatott 24.2. Lehetőség van, hogy hozzon létre egy új átkódolás az SQL-parancs CREATE átalakítás.

Táblázat 24.2. Kliens-szerver konverziós karakterkészletek

Elérhető ügyfél kódolás

Annak érdekében, hogy az automatikus szimbólum konverzió, meg kell mondanunk Postgres Pro kódolást használni kívánt kliens oldalon. Ezt meg lehet tenni több módon:

A parancs \ kódolás a PostgreSQL-ben. \ Kódolás lehetővé teszi, hogy gyorsan változik az ügyfél kódolást. Például, hogy módosítsa a kódolás SJIS. írja:
  • libpq (Section 33.10) olyan funkciói kezelheti ügyfelei kódolás.
  • SET client_encoding TO. Az ügyfél-kódolás az alábbi SQL-parancsot:

    Szintén erre a célra, akkor a szokásos szintaxis az SQL SET NAMES.

    Szerezd meg a jelenlegi kliens kódolás:

    Visszatérhet az alapértelmezett kódolás:
  • Használata PGCLIENTENCODING. Ha a környezeti változó PGCLIENTENCODING. majd, hogy a kliens kódolás automatikusan kiválasztódik, ha a kiszolgálóhoz való csatlakozás. (A jövőben lehet felülírják a fent említett módszerek.)
  • Használata változó client_encoding konfiguráció. Ha a változó client_encoding. az említett ügyfél kódolás automatikusan kiválasztódik, ha a kiszolgálóhoz való csatlakozás. (A jövőben, ez lehet felülírják a fent említett módszerek.)

  • Ha bizonyos karaktereket nem lehet átkódolni (feltételezve, hogy a kiválasztott EUC_JP latin1 szerver és kliens, és átadta néhány japán karakterek nem jelennek meg a latin1), hiba történik.

    Ha az ügyfél kódolás definiáljuk SQL_ASCII. átkódolás van tiltva, függetlenül attól, hogy a szerver kódolást. Mivel a szerver, ne használja SQL_ASCII. ha nem dolgozik, az adatok, hogy teljes mértékben összhangban van az ASCII.

    24.3.4. További információforrások

    Javasolt források kezdeni tanulni különféle kódolási rendszereket.

    Az információfeldolgozás, a kínai, japán, koreai Vietnami.

    Weboldal Unicode Consortium. RFC 3629

    UTF -8 (formátum átalakítás 8-bites UCS / Unicode) az itt meghatározott.