Postgresql сортировка конкретных символов языка (сопоставление)

Я, как носитель языка, который имеет несколько необычных символов, таких как ÕÜÖÄ, подумайте, что если я создаю приложение, которое позволяет пользователю сохранять контент на эстонском языке в базу данных, то это приложение также должно иметь возможность правильно сортировать данные в соответствии с настройками языка.

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

Еще хуже, если вы включите в микс такие языки, как русский - они имеют совершенно разные символы.

Теперь, так как я знаю, что сайт django может отображать все эти специальные символы просто отлично, яЯ беспокоюсь только о сортировке, которая идет на уровне базы данных. Так, как я могу гарантировать, что объекты читаются из базы данных и сортируются в правильном, специфическом для языка порядке.

Пример: если я создаю базу данных с кодировкой utf8 и с сопоставлением по умолчанию (английский utf8), то таблица, содержащая значения

alan
oskar
ölen
älan
öskar

Будут отсортированы (по "выберите * из тестового заказа по nimi asc; ") к:

alan
älan
ölen
oskar
öskar

Что неверно. Если я создаю базу данных с сортировкой POSIX, то тот же запрос приводит к:

alan
oskar
älan
ölen
öskar

Это кажется правильным, потому что если вы бросите еще несколько имен (хLAN, ålan) в смесь, то результаты:

alan
oskar
älan
ålan
õlan
ölen
öskar

Потому что, согласно эстонскому алфавиту, они должны быть:

alan
oskar
õlan
älan
ölen
öskar
ålan (cause å is not in estonian alphabet)

Я использую postgresql 9.1.9 и понимаю, что поддержка сортировки доступна с 9.1 (http://www.postgresql.org/docs/9.1/interactive/collation.html).

Это то, что я должен использовать?

SELECT nimi COLLATE "et_EE" FROM test ORDER BY nimi ASC;

Сбой с ошибкой ОШИБКА: сопоставление "et_EE.utf8" для кодированияUTF8" не существует. Это почему? Должен ли я создать это правило сопоставления или что-то? Это способ пойти - указать правила сортировки с каждым запросом, если я хочу результаты в правильном порядке?

Алан

Изменить: 1, чтобы ответить на вопрос: моя локаль -a показывает:

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
et_EE
et_EE.iso88591
et_EE.utf8
POSIX
zh_CN.utf8
zh_SG.utf8

sudo locale-gen et_EE.UTF-8
[sudo] password for alan: 
Generating locales...
  et_EE.UTF-8... up-to-date
Generation complete.
sudo locale-gen et_EE
Generating locales...
  et_EE.ISO-8859-1... up-to-date
Generation complete.

SQL по-прежнему не работает, хотя

Edit2: я думаю, что я понял это. Я должен был создать само сопоставление в postgresql тоже (http://www.postgresql.org/docs/9.1/static/sql-createcollation.html):

CREATE COLLATION "et_EE" (LOCALE = "et_EE.utf8")

Так что я думаю, мне нужно создать те файлы локали оболочки, о которых вы мне говорили, zero323, а затем создать сопоставления для базы данных, а затем ям все готово.

Ответы на вопрос(1)

Ваш ответ на вопрос