如何使用 ISO 8859-1 字符集在 Postgreql 中创建数据库?

问题描述

我正在尝试使用 ISO 8859-1 字符集在 Postgresql 中创建名为“MUSIC”的数据库。我收到以下错误

testdb=# CREATE DATABASE MUSIC WITH ENCODING 'ISO 8859-1';

ERROR:  encoding "latin1" does not match locale "English_India.1252"
DETAIL: The chosen LC_CTYPE setting requires encoding "WIN1252".

解决方法

如果您确实需要单字节编码,请使用 WIN1252。它是 ISO 8859-1 的严格超集,可在 Windows 上使用(典型的 Microsoft 风格 embrace,extend and extinguish)。

但是没有充分的理由使用除 UTF8 以外的编码,我建议您使用这种编码。

,

编码“WIN1252”,示例:

postgres=# CREATE DATABASE database_name WITH TABLESPACE tablespace_name TEMPLATE = template0 OWNER = database_user ENCODING 'WIN1252' LC_CTYPE = 'Portuguese_Brazil.1252' LC_COLLATE = 'Portuguese_Brazil.1252';
CREATE DATABASE
postgres=#
postgres=# \l

                                             

数据库列表

     Name      |     Owner     | Encoding |        Collate         | Ctype |  Access privileges
 database_name | database_user | WIN1252  | Portuguese_Brazil.1252 | Portuguese_Brazil.1252 |