GBASE 8C——SQL参考4 字符集支持

    1. 字符集支持
      1. 支持的字符集

名称

描述

语言

是否服务器端?

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

      1. 设置字符集

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)

      1. 服务器与客户端之间的自动字符集转换

服务器字符集

可用的客户端字符集

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

启用自动字符集转换功能,需要告知数据库客户端使用的字符集/编码:

  1. 用gsql里的\encoding命令。例如,把编码改变为SJIS:

\encoding SJIS

  1. libpq中提供函数控制客户端编码。
  2. 使用SET client_encoding TO设置客户端编码:

SET CLIENT_ENCODING TO 'value';

或者使用SQL的SET NAMES:

SET NAMES 'value';

查询当前客户端编码:

SHOW client_encoding;

重置为缺省编码:

RESET client_encoding;

  1. 使用PGCLIENTENCODING。如果在客户端的环境里定义了PGCLIENTENCODING环境变量, 那么在与服务器进行了连接后将自动选择客户端编码(这个设置随后可以用上文提到的任何其他方法重载)。

使用client_encoding配置变量。如果client_encoding变量被设置,那么在与服务器建立了连接之后,这个客户端编码将备自动选定(这个设置随后可以用上文提到的方法重载)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值