Re: Čeština PostgreSQL, PHP, RH6.2cz
Josef Zacek
Zacek na aq-test.cz
Čtvrtek Červen 7 12:01:50 CEST 2001
> Windowsy a unixy používají kódování win-1250 a iso-8859-2, ty se
> pro češtinu liší ve třech(šesti) písmenech žšť (ŽŠŤ). Může se tedy
> stát, že se nepřekódovává vůbec nic. Vám se potom zdá, že je vše v
> pořádku, dokud se tam neobjeví jeden z těch výše jmenovaných znaků.
Zdá se, že tady bude ta smrdutá potvora. Skutečně se to týká pouze
těchto písmen. Ale....
Odběhl jsem přímo k serveru a podíval se do tabulky rovnou z konzole
abych se vyhnul rekódování. Jinak používám putty z Win s auto
rekódováním - taky funguje SELECT na žšť. Zápis U VŠECH písmen s
diakritikou je O.K., tj. včetně žšť. SELECT přímo z konzole funguje
také O.K. Zkrátka jsou korektně zapsána do databáze v kódování
LATIN2.
Akorát pokud SELECT projde přes to php tak se nějak po....
Domnívám se, proto že jde o problém php. Na všech HTML stránkách mám
napsáno <META http-equiv="Content-Type" content="text/html;
charset=windows-1250"> a před každým SQL dotazem (vstup z formuláře -
INSERT, SELECT, UPDATE) napíšu SET CLIENT ENCODING='WIN1250' .
Pokud napíšu v WWW browseru - formulář
SELECT * FROM adresar
tak se v pohodě v WWW browseru diakritika napíše v pořádku - žšť, ale
pokud napíšu
SELECT * FROM adresar WHERE jmeno LIKE 'žšť'
pak je to špatně, pomůže jen
SELECT * FROM adresar WHERE jmeno LIKE '___'
pak je to zase O.K. (_ zastupuje ve Win ?, % zastupuje ve Win *)
Uff... jsem zase zmaten. PostgreSQL je zřejmně nevinen. Možná php a
nakonec, že i Apache přidá svou trošku do mlýna.
Možná jako poslední můžu zkusit přepsat HTML do ISO-8859-2 namísto
WIN1250 a nastavit vše na ISO-8859-2 a nestarat se o nic.
Pepa
P.S. Výpis
adresar=# \l
List of databases
Database | Owner | Encoding
---------------+-------------+-----------
adresar | postgres | LATIN2
Další informace o konferenci Redhat-cz