Подтвердить что ты не робот

LC_COLLATE и LC_CTYPE suport для utf-8 в postgreSQL

От этой ссылки http://wiki.postgresql.org/wiki/Todo:Collate и http://www.postgresql.org/docs/9.1/static/collation.html. это меня смущает.

Они сказали, что поддержка utf-8 зависит от возможностей ОС и ее отклонений между всеми опциями LC_COLLATE и LC_CTYPE.

Когда я создаю базу данных с помощью pdAdmin III, есть 3 варианта, C, Posix and English_United States.1252. Какая разница между C, Posix and English_United States.1252?

Я хочу работать со всеми поддерживаемыми языками, то есть unicode utf-8, который, похоже, не является вариантом.

Что я должен был выбрать для значений LC_COLLATE и LC_CTYPE для создания базы данных, поддерживающей utf-8 в PostgreSQL 9?

4b9b3361

Ответ 1

Как документация, 22.2. Поддержка набора символов говорит:

Важное ограничение, однако, что каждый набор символов базы данных должны быть совместимы с базой данных LC_CTYPE (классификация символов) и LC_COLLATE (порядок сортировки строк) языковые настройки. Для C или POSIX locale, любой набор символов разрешен, но для других мест есть только один набор символов, который будет работать правильно. (В Windows, однако, UTF-8 кодировка может использоваться с любой локалью.)

Я вижу, что, возможно, у вас есть PostgreSQL под хостом Windows (English_United States.1252 locale), поэтому вы можете использовать что-либо из них (Posix совпадает с C и означает "no locale" ), читайте 22.1. Поддержка локалей:

Поддержка локалей относится к применение в отношении культурных предпочтения в отношении алфавитов, сортировка, форматирование чисел и т.д.

Если вы хотите, чтобы система вела себя так, как будто у него не было поддержки языкового стандарта, используйте специальный язык C или POSIX.

EDIT:

Платформа Windows не совместима с POSIX, поэтому для этой платформы следует использовать C locale. Я не знаю, почему у установщика есть опция POSIX (я предполагаю, что это скорее ошибка):

enter image description here

Чтобы создать новый кластер без локали, вы можете просто использовать переключатель --no-locale, например:

initdb --no-locale -E UTF-8 C:\pgdata