Обсуждение: LATIN2 encoding and Polish_Poland locale

Поиск
Список
Период
Сортировка

LATIN2 encoding and Polish_Poland locale

От
Andrzej Angowski
Дата:
All,

I am running PostgreSQL database on Windows XP with SP3 machine.
Recently I have tried to upgrade from 8.2.15 to 8.4.2 but I encounter
the following issue: one of my databases is LATIN2 encoded
(ISO-8859-2). It works fine on 8.2.15 (LATIN2 encoding and
Polish_Poland locale - I have Polish characters and sorting works
fine), but on 8.4.2 default encoding for Polish_Poland is UTF-8. When
I try to set up LATIN2 encoding with Polish_Poland locale I get the
following error:

>createdb -E LATIN2 -l Polish_Poland test
createdb: database creation failed: ERROR:  encoding LATIN2 does not
match locale Polish_Poland
DETAIL:  The chosen LC_CTYPE setting requires encoding WIN1250.

In 8.4 manual -> Section 22.2 Character Set Support one can read:
An important restriction, however, is that each database's character
set must be compatible with the database's LC_CTYPE and LC_COLLATE
locale settings. For C or POSIX locale, any character set is allowed,
but for other locales there is only one character set that will work
correctly. (On Windows, however, UTF-8 encoding can be used with any
locale.)

So I manage to establish a DB with LATIN2 encoding with C locale:
>createdb -E LATIN2 -l C -T template0 test

I have Polish characters but sorting is not correct.

How can I set up Polish_Poland locale with LATIN2 encoding in PostgreSQL 8.4.2?


Thanks,
--
Andrzej Angowski

Re: LATIN2 encoding and Polish_Poland locale

От
"Jan-Peter Seifert"
Дата:
Hello Andrzej,

try this:

Identify the code page Windows is using for LATIN2 with the PostgreSQL tool pg_controldata (8.2 server's version). Look
forthe number following the dot in LC_COLLATE / LC_TYPE. For LATIN1 it's 28591. 

Try creating the database for 8.4 with the PostgreSQL tool createdb (v8.4.x) (example for LATIN1 and German locale,
locale= LC_COLLATE / LC_TYPE in 8.2): 

createdb -U postgres -h <Host> -p <Port> --owner=name_of_owner --locale=German_Germany.28591 --encoding=LATIN1
--template=template0database_name 

Good luck,

Peter

-------- Original-Nachricht --------
> Datum: Sun, 28 Feb 2010 22:44:49 +0100
> Von: Andrzej Angowski <andrzej.angowski@gmail.com>
> An: pgsql-admin@postgresql.org
> Betreff: [ADMIN] LATIN2 encoding and Polish_Poland locale

> All,
>
> I am running PostgreSQL database on Windows XP with SP3 machine.
> Recently I have tried to upgrade from 8.2.15 to 8.4.2 but I encounter
> the following issue: one of my databases is LATIN2 encoded
> (ISO-8859-2). It works fine on 8.2.15 (LATIN2 encoding and
> Polish_Poland locale - I have Polish characters and sorting works
> fine), but on 8.4.2 default encoding for Polish_Poland is UTF-8. When
> I try to set up LATIN2 encoding with Polish_Poland locale I get the
> following error:
>
> >createdb -E LATIN2 -l Polish_Poland test
> createdb: database creation failed: ERROR:  encoding LATIN2 does not
> match locale Polish_Poland
> DETAIL:  The chosen LC_CTYPE setting requires encoding WIN1250.
>
> In 8.4 manual -> Section 22.2 Character Set Support one can read:
> An important restriction, however, is that each database's character
> set must be compatible with the database's LC_CTYPE and LC_COLLATE
> locale settings. For C or POSIX locale, any character set is allowed,
> but for other locales there is only one character set that will work
> correctly. (On Windows, however, UTF-8 encoding can be used with any
> locale.)
>
> So I manage to establish a DB with LATIN2 encoding with C locale:
> >createdb -E LATIN2 -l C -T template0 test
>
> I have Polish characters but sorting is not correct.
>
> How can I set up Polish_Poland locale with LATIN2 encoding in PostgreSQL
> 8.4.2?
>
>
> Thanks,
> --
> Andrzej Angowski
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin

--
Sicherer, schneller und einfacher. Die aktuellen Internet-Browser -
jetzt kostenlos herunterladen! http://portal.gmx.net/de/go/chbrowser

Re: LATIN2 encoding and Polish_Poland locale

От
Andrzej Angowski
Дата:
Peter,

The following actually works:
>createdb -E LATIN2 -l Polish_Poland.28592 test


Thanks a lot!

2010/3/1 Jan-Peter Seifert <Jan-Peter.Seifert@gmx.de>:
> Hello Andrzej,
>
> try this:
>
> Identify the code page Windows is using for LATIN2 with the PostgreSQL tool pg_controldata (8.2 server's version).
Lookfor the number following the dot in LC_COLLATE / LC_TYPE. For LATIN1 it's 28591. 
>
> Try creating the database for 8.4 with the PostgreSQL tool createdb (v8.4.x) (example for LATIN1 and German locale,
locale= LC_COLLATE / LC_TYPE in 8.2): 
>
> createdb -U postgres -h <Host> -p <Port> --owner=name_of_owner --locale=German_Germany.28591 --encoding=LATIN1
--template=template0database_name 
>
> Good luck,
>
> Peter
>
> -------- Original-Nachricht --------
>> Datum: Sun, 28 Feb 2010 22:44:49 +0100
>> Von: Andrzej Angowski <andrzej.angowski@gmail.com>
>> An: pgsql-admin@postgresql.org
>> Betreff: [ADMIN] LATIN2 encoding and Polish_Poland locale
>
>> All,
>>
>> I am running PostgreSQL database on Windows XP with SP3 machine.
>> Recently I have tried to upgrade from 8.2.15 to 8.4.2 but I encounter
>> the following issue: one of my databases is LATIN2 encoded
>> (ISO-8859-2). It works fine on 8.2.15 (LATIN2 encoding and
>> Polish_Poland locale - I have Polish characters and sorting works
>> fine), but on 8.4.2 default encoding for Polish_Poland is UTF-8. When
>> I try to set up LATIN2 encoding with Polish_Poland locale I get the
>> following error:
>>
>> >createdb -E LATIN2 -l Polish_Poland test
>> createdb: database creation failed: ERROR:  encoding LATIN2 does not
>> match locale Polish_Poland
>> DETAIL:  The chosen LC_CTYPE setting requires encoding WIN1250.
>>
>> In 8.4 manual -> Section 22.2 Character Set Support one can read:
>> An important restriction, however, is that each database's character
>> set must be compatible with the database's LC_CTYPE and LC_COLLATE
>> locale settings. For C or POSIX locale, any character set is allowed,
>> but for other locales there is only one character set that will work
>> correctly. (On Windows, however, UTF-8 encoding can be used with any
>> locale.)
>>
>> So I manage to establish a DB with LATIN2 encoding with C locale:
>> >createdb -E LATIN2 -l C -T template0 test
>>
>> I have Polish characters but sorting is not correct.
>>
>> How can I set up Polish_Poland locale with LATIN2 encoding in PostgreSQL
>> 8.4.2?
>>
>>
>> Thanks,
>> --
>> Andrzej Angowski
>>
>> --
>> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-admin
>
> --
> Sicherer, schneller und einfacher. Die aktuellen Internet-Browser -
> jetzt kostenlos herunterladen! http://portal.gmx.net/de/go/chbrowser
>



--
Andrzej Angowski

e-mail : Andrzej.Angowski@gmail.com