-
- 字符集支持
- 支持的字符集
- 字符集支持
名称 | 描述 | 语言 | 是否服务器端? | ICU? | 字节/字符 | 别名 |
BIG5 | Big Five | 繁体中文 | 否 | 否 | 1-2 | WIN950, Windows950 |
EUC_CN | 扩展UNIX编码-中国 | 简体中文 | 是 | 是 | 1-3 | |
EUC_JP | 扩展UNIX编码-日本 | 日文 | 是 | 是 | 1-3 | |
EUC_JIS_2004 | 扩展UNIX编码-日本, JIS X 0213 | 日文 | 是 | 否 | 1-3 | |
EUC_KR | 扩展UNIX编码-韩国 | 韩文 | 是 | 是 | 1-3 | |
EUC_TW | 扩展UNIX编码-台湾 | 繁体中文,台湾话 | 是 | 是 | 1-3 | |
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内部编码 | 多语种编辑器 | 是 | 否 | 1-4 | |
SJIS | Shift JIS | 日语 | 否 | 否 | 1-2 | Mskanji, ShiftJIS, WIN932, Windows932 |
SHIFT_JIS_2004 | Shift JIS, JIS X 0213 | 日语 | 否 | 否 | 1-2 | |
SQL_ASCII | 未指定(见文本) | 任意 | 是 | 否 | 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 |
-
-
- 设置字符集
-
initdb定义数据库默认字符集/编码,例如:
initdb -E GKR
可以用--encoding代替-E。如果没有给出-E或者--encoding选项,initdb会尝试基于指定的或者默认的区域判断要使用的合适编码。
使用非默认字符集/编码时,应考虑其与所选择的区域兼容:
createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
或使用SQL命令实现:
CREATE DATABASE korean WITH ENCODING 'GB18030' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
数据库的字符集/编码存储在系统目录pg_database中。可以使用gsql -l选项或者\l命令进行查看。
gsql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+-------+----------+-------------+-------------+-------------------
gbase | gbase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
korean | gbase | EUC_KR | ko_KR.euckr | ko_KR.euckr |
template0 | gbase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/gbase +
| | | | | gbase=CTc/gbase
template1 | gbase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/gbase +
| | | | | gbase=CTc/gbase
(4 rows)
-
-
- 服务器与客户端之间的自动字符集转换
-
服务器字符集 | 可用的客户端字符集 |
BIG5 | 不支持作为一个服务器编码 |
EUC_CN | EUC_CN, MULE_INTERNAL, UTF8 |
EUC_JP | EUC_JP, MULE_INTERNAL, SJIS, UTF8 |
EUC_KR | EUC_KR, MULE_INTERNAL, UTF8 |
EUC_TW | EUC_TW, BIG5, MULE_INTERNAL, UTF8 |
GB18030 | UTF8 |
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 | JOHAB, UTF8 |
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 | 不支持作为一个服务器编码 |
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 |
启用自动字符集转换功能,需要告知数据库客户端使用的字符集/编码:
- 用gsql里的\encoding命令。例如,把编码改变为SJIS:
\encoding SJIS
- libpq中提供函数控制客户端编码。
- 使用SET client_encoding TO设置客户端编码:
SET CLIENT_ENCODING TO 'value';
或者使用SQL的SET NAMES:
SET NAMES 'value';
查询当前客户端编码:
SHOW client_encoding;
重置为缺省编码:
RESET client_encoding;
- 使用PGCLIENTENCODING。如果在客户端的环境里定义了PGCLIENTENCODING环境变量, 那么在与服务器进行了连接后将自动选择客户端编码(这个设置随后可以用上文提到的任何其他方法重载)。
使用client_encoding配置变量。如果client_encoding变量被设置,那么在与服务器建立了连接之后,这个客户端编码将备自动选定(这个设置随后可以用上文提到的方法重载)。