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

后端 未结 2 476
死守一世寂寞
死守一世寂寞 2021-02-06 10:55

I\'m configuring PostgreSQL db for the Bitbucket Server on Windows. In the official guide it says that:

The database must be configured to use the UTF-8 c

相关标签:
2条回答
  • 2021-02-06 10:56

    There is no UTF8 collation. UTF8 is a way to encode characters as numbers, a so-called encoding. Collations define how characters (and composites) are ordered.

    While you have to pick a collation that matches the database encoding with PostgreSQL on UNIX, that is not required on Windows. Maybe the documentation you are reading is targeted at UNIX.

    You should ask the people who wrote the software to tell you what collation to use.

    0 讨论(0)
  • 2021-02-06 11:14

    Assuming that you are trying to create a PosgreSQL database with US locale sort order and character classification with UTF-8 encoding on Windows, following is a modification to the code example posted in the original question that may be used to achieve that result.

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

    One liner format for terminal copy / paste:

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

    For anyone trying to create a similar database in a Linux environment such as Ubuntu on Windows Subsystem for Linux, you can do the following (depending on the specific environment, you may need to use 'en_US.UTF8' as the locale instead):

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

    One liner format for terminal copy / paste:

    CREATE DATABASE "example_db" WITH OWNER "postgres" ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE template0;
    
    0 讨论(0)
提交回复
热议问题