问题描述
我正在尝试使用 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 |