繁体   English   中英

如何在 Windows 上的 PostgreSQL 中使用 UTF-8 排序规则创建数据库?

[英]How to create a database with UTF-8 collation in PostgreSQL on Windows?

我正在为 Windows 上的 Bitbucket 服务器配置 PostgreSQL 数据库。 在官方指南中它说:

必须将数据库配置为使用 UTF-8 字符集。

它并没有严格说您必须将整理设置为 UTF-8,但是对于其他 Atlassian 产品,建议使用它,因此我认为 Bitbucket Server 的情况也是如此。 Confluence 文档中的示例:

  • 字符编码必须设置为utf8编码。
  • 排序规则也必须设置为 utf8。 已知其他排序规则(例如“C”)会导致 Confluence 出现问题。

这就是我现在所拥有的,问题是它将排序规则设置为English_United States.1252

CREATE DATABASE test
WITH OWNER "postgres"
ENCODING 'UTF8'
LC_COLLATE = 'american_usa'
LC_CTYPE = 'american_usa'
TEMPLATE template0;

是否真的需要将排序规则设置为 UTF-8,如果是,我该怎么做?

假设您尝试在 Windows 上使用美国语言环境排序顺序和字符分类使用 UTF-8 编码创建 PosgreSQL 数据库,以下是对原始问题中发布的代码示例的修改,可用于实现该结果。

CREATE DATABASE "example_db"
WITH OWNER "postgres"
ENCODING 'UTF8'
LC_COLLATE = 'en-US'
LC_CTYPE = 'en-US'
TEMPLATE template0;

终端复制/粘贴的一种衬垫格式:

CREATE DATABASE "example_db" WITH OWNER "postgres" ENCODING 'UTF8' LC_COLLATE = 'en-US' LC_CTYPE = 'en-US' TEMPLATE template0;

对于任何试图在 Linux 环境(例如 Windows Subsystem for Linux 上的 Ubuntu)中创建类似数据库的人,您可以执行以下操作(根据特定环境,您可能需要使用'en_US.UTF8'作为语言环境):

CREATE DATABASE "example_db"
WITH OWNER "postgres"
ENCODING 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
TEMPLATE template0;

终端复制/粘贴的一种衬垫格式:

CREATE DATABASE "example_db" WITH OWNER "postgres" ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE template0;

没有 UTF8 整理。 UTF8 是一种将字符编码为数字的方法,即所谓的编码 排序规则定义了字符(和组合)的排序方式。

虽然您必须选择与 UNIX 上的 PostgreSQL 数据库编码匹配的排序规则,但在 Windows 上则不需要。 也许您正在阅读的文档是针对 UNIX 的。

您应该询问编写软件的人告诉您要使用的归类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM