Portál AbcLinuxu, 14. května 2025 05:24

Dotaz: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4

6.8.2009 16:18 tomas
problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Přečteno: 854×
Odpovědět | Admin
Dobrý den,

prosím o radu, naistaloval jsem si PostgreSQL 4.8 na Vistech a mam problem, ze kdyz vytvarim jakoukoliv databázi, tak nejde vytvorit v jinem kodovani nez utf-8. Ja bych potreboval Latin2. Po zadani prikazu:

CREATE DATABASE obchod encoding 'LATIN2';

dostanu chybu: "ERROR: encoding LATIN2 does not match locale Czech_Czech Republic.1250 DETAIL: The chosen LC_CTYPE setting requires encoding WIN1250."

Pri instalaci jde zadat pouze location a tam at davam cokoliv, tak se kodovani z UTF-8 stejne nezmeni :( Databazi vzdy vytvarim v rozhrani pgAdminIII. Nevite co s tim? Dekuju.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

okbob avatar 6.8.2009 16:30 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Odpovědět | | Sbalit | Link | Blokovat | Admin

Počínaje 8.4 je v pg kontrola, zda-li locales odpovídá kódování. Častou chybou v nižších verzích bylo, že uživatel si nainstaloval např locale latin2 a kódování UTF8 - což samozřejmě nemůže fungovat. U Vás je default locales Czech_Czech Republic.1250, tudíž defacto byste měl použít pouze kódování Win1250. Jak je to s UTF, přiznám se, že nevím.

Pokud je mi známo, tak na Win locales Latin2 není, takže jej používat ani nemůžete - PostgreSQL je závislá na systémové podpoře. Další problém může být v pgAdminu. Může jít o bug. Zkuste z konzole psql se podívat na parametry příkazu CREATE DATABASE tj \h CREATE DATABASE a pak tento příkaz zkusit z konzole.

 

6.8.2009 21:37 Zdenek Kotala
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Odpovědět | | Sbalit | Link | Blokovat | Admin

Je nejaky duvod pouzivat prave LATIN2? Konverzni funkce by mely zkonvertovat data do spravneho kodovani. Dulezite je mit nastavene spravne client encoding. Podivejte se sem www.postgresql.org/docs/current/static/multibyte.html

7.8.2009 08:28 tomas
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dekuju za rady, problem vyresen (odlozen) instalaci verze 8.3.
okbob avatar 7.8.2009 09:35 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4

Tím jste nic nevyřešil - zkuste si SELECT upper("příliš žluťoučký kůň se napil žluté vody") nebo ORDER BY.

Pokud Vám nezáleží na podpoře kódování, pak doporučuji C kódování - nebo ANSI, při nich se řadí dle ANSI, což je relativně o dost rychlejší než dle locale.

14.10.2009 23:39 MIKI_
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Zdravim, mam ten isty problem. Avsak mne na kodovani zalezi, na localhoste, kde mam Win7 potrebujem PostgreSQL DB, ktora je kodovana v LATIN2 (pouziva sa na serveri - debian).

Prosim, mohli by ste mi poradit co robit? Webova stranka je robena na LATIN2 (teda ISO 8859-2), a teda neviem, ci by bolo vhodne menit DB. Ibaze by som mohol pouziva LATIN2, a v DB mat WIN1250, ktory bude spravne vraciat text s diakritikou. Vopred dakujem za pomoc. Este stale googlim, bez uspechu :(
okbob avatar 15.10.2009 06:05 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: problem s kodovanim LATIN2 u databaze v PostgreSQL 8.4
Jak už zaznělo výše, ve Win LATIN2 není podporováno. Je to problém MS Windows. Ovšem klidně můžete mít databázi v UTF. Stačí jen nastavit client_encoding (který může být výchozí LATIN2) a databáze správně překóduje data pro klienta a od klienta do/z LATIN2.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.