PostgreSQL 字符编码总结

栏目: 数据库 · 发布时间: 6年前

字符集可在 initdb、createdb、”create database” 时设定,每个数据库的字符集必须和 LC_CTYPE、LC_COLLATE 设置兼容,C 或 POSIX 区域兼容任意字符集,但其他区域只兼容一种字符集(在 Windows 上 UTF-8 编码可兼容任意区域)。

PostgreSQL 支持编码在服务端和前端之间的自动编码转换,也可以使用 SQL 命令创建一种编码转换。比如数据库使用了 EUC_JP 日文编码,但前端收到的是 UTF8 编码的数据,数据库内部会自动完成 UTF8 到 EUC_JP 的编码转换。

若数据库被设置为 SQL_ASCII 编码,字节值 [0, 127] 依据 ASCII 标准解释,[128, 255] 作为无法解析的字符,数据库不会做任何编码转换。也就是说,使用了非 ASCII 数据时,数据库不会转换编码,也不会校验非 ASCII 字符。

若客户端使用了 SQL_ASCII 编码发送 SQL 语句,那么数据库的自动编码转换会禁用,不管数据库的字符集是什么。

这种行为被允许但会被弃用:通过超级用户创建数据库,数据库编码为 SQL_ASCII,LC_CTYPE 不为 C 也不为 POSIX。

除非很明确地知道数据库内存入的数据都是 ASCII 数据,否则不建议将数据库编码设置为 SQL_ASCII ,也不建议客户端编码设置为 SQL_ASCII。

表格 Client/Server Character Set Conversions 显示了 PostgreSQL 支持的服务端/客户端的自动编码转换,比如数据库编码采用 EUC_JP,客户端可使用 EUC_JP、MULE_INTERNAL、SJIS、UTF8 编码,数据库内部就能够完成自动编码转换。若数据库采用 UTF8 编码,那么客户端使用任意编码都行。进一步地看,不管数据库使用什么编码,自动编码转换支持使用 UTF8 编码的客户端;不过有一个例外就是数据库采用 MULE_INTERNAL 编码,客户端使用 UTF8 时就无法做自动编码转换。

参考链接: Character Set Support

Advertisements


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息架构

信息架构

[美] 路易斯·罗森菲尔德、[美] 彼得·莫尔维莱、[美] 豪尔赫·阿朗戈 / 樊旺斌、师蓉 / 电子工业出版社 / 2016-5-1 / 128.00元

本书的前三个版本都是信息架构领域的开山著作。其中描述了信息组织的普遍和永恒原则,这一原则也适用于不断增长的移动世界。在第4版中,作者运用大量最新的插图和例子为这些原则提供了当前实践中的情境,验证了那些与技术和供应商无关的工具,以及那些经受住时间考验的技术。一起来看看 《信息架构》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具