2011-07-05 9 views
20

Od tego linku http://wiki.postgresql.org/wiki/Todo:Collate i http://www.postgresql.org/docs/9.1/static/collation.html. to sprawia, że ​​jestem zdezorientowany.Obsługa LC_COLLATE i LC_CTYPE dla utf-8 w postgreSQL

Powiedzieli, że wsparcie dla użytkownika zależy od możliwości systemu operacyjnego, a także od jego różnicy między opcjami LC_COLLATE i LC_CTYPE.

Po utworzeniu bazy danych przy użyciu pdAdmin III dostępna jest opcja 3, C, Posix and English_United States.1252. Czym różni się C, Posix and English_United States.1252?

Chcę pracować ze wszystkimi obsługiwanymi językami, to jest unicode utf-8, co nie wydaje się być opcją.

Co muszę wybrać dla wartości LC_COLLATE i LC_CTYPE dla tworzenia bazy danych, która obsługuje utf-8 w PostgreSQL 9?

Odpowiedz

12

jako dokumentacja, 22.2. Character Set Support mówi:

Ważnym ograniczeniem jest jednak że zestaw znaków każda baza danych za musi być zgodna z LC_CTYPE (klasyfikacja znaków) W bazie danych jest i LC_COLLATE (string porządek) Ustawienia regionalne. W przypadku locale, dowolny zestaw znaków jest dozwolony, , ale w przypadku innych ustawień narodowych istnieje tylko jeden zestaw znaków, który będzie działać prawidłowo . (W systemie Windows, jednak 8 UTF- kodowanie może być używany z żadnej lokalizacji.)

widzę, że prawdopodobnie masz PostgreSQL pod hosta Windows (English_United States.1252 locale), dzięki czemu można używać niezależnie od nich (Posix jest tak samo jak C i oznacza „nie locale”), czytać 22.1. Locale Support:

wsparcie locale odnosi się do wniosku poszanowaniem kulturalnych preferencje dotyczące alfabetów, sortowania, formatowanie numer itp

Jeśli chcesz, aby system zachowywał się tak, jakby nie miał obsługi locale, użyj specjalnego locale C lub POSIX.

EDIT:

platformę Windows nie jest zgodny z POSIX, więc należy użyć C locale dla tej platformy. Nie wiem dlaczego instalator ma możliwość POSIX (myślę, że to raczej błąd):

enter image description here

Aby utworzyć nowy klaster bez lokalizacji może po prostu użyć --no-locale przełącznika np

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

OWH dzięki tak wiele. teraz rozumiem. – Ahmad

+0

Ale mam problem. Próbuję ponownie zainstalować PostgreSQL, a następnie w początkowej instalacji wybrałem POSIX.po zakończeniu próbuję utworzyć nową bazę danych, ale mam błąd "Niepoprawna nazwa lokalizacji POSIX" – Ahmad

+0

@Ahmad: Spróbuj zamiast tego użyć 'C'. –

Powiązane problemy