cestina v mysql

Jan Havlicek havlicek na vse.cz
Středa Duben 11 13:40:12 CEST 2001


Honza Pazdziora wrote:
> 
> On Wed, 11 Apr 2001 08:40:30 +0100, Jan Havlicek <havlicek na vse.cz> wrote:
> >
> > Z ruznych duvodu mam data v MySQL v kodovani windows-1250. Zkompiloval
> > jsem MySQL s podporou kodu czech a win1250, potud vse vporadku. Potiz je
> Czech a win1250 se vzajemne nedoplnuji.

*** To jsem ani nemel namysli. Jednak jsme chtel zkusit, jak se tobude
chovat pri nastaveni charsetu na win1250 (a hovani je jak nize popisuji,
tedy nepouzitelne) a druhak jak kdyz to pustim s czech. Krom toho jsme
si naivne mylel, ze timto doahnu moznosti prekodovavani mezi klientem a
serverem nastavenim nejake promenne v konfiguracnim souboru.

> > - pustim server v kodovani win1250. Tridi to spravne ale neumi to
> > zatridit ch. _NEFUNGUJE ODBC_ z Win stroju.
> > - pustim server v kodovani chzech (ISO-8859-2). Tridi to spravne ch a
> > ceske znaky krome z~ s~ a t~, coz me neprekvapuje. ODBC z Windows
> > funguje, ale do databaze to data cpe as is, tedy v kodu
> > windows-1250!!!!! Pres WWW rozhrani a server apache s csackem a PHP4 mi
> > to data vklada podle toho jak nastavim kodovani v Netscapu. Tedy bud
> > win1250 nebo ISO.
> >
> > TOhle je pro me neprijatelne a nevim zatim jak to resit.
> 
> Zapnete si prekodovavani dat pri ukladani na server. Viz archiv teto
> i jinych konferenci.

*** Ha.. dik. Preklad slova zapnete znamena upravte jisty oubor ve
zdrojove distribuci vhodnym zpusobem, prekompilujte MySQL, nainstalujte
a pri kazdem navazani spojeni jako prvni prikaz spustte SET atd atd...
coz neni uplne trivialni postup. Chapu ze ocekavam radu, jejiz byt
napsani zabira odpovidajicimu cas, ale apson bych cekal, ze kdyz si ten
cas nekdo udela tak alepon primo napise ze dana operace neni uplne
trivialni a co priblizne obnasi.

Uvedeny postup jsem provedl (zpestreny jeste tim, ze kompiluji ze
zdrojoveho RPM a chci mit binarni RPM ktere nainstaluji, coz pridava
nekolik dlasich kroku), vpodstate to funguje, ale zcela me to
neuspokojuje. 

Rad bych dosahl nesledujiciho stavu:

Data v databazi jsou ulozena v jednotnem charsetu (uz jme se smiril s
tim ze to bude ISO-8859-2, protoze podpora win1250 neumi spravne tridit
a navic pak nefunguje ODBC)

Databaze prekoduju rucne davkou pres mysqldump a zpatky

ALE

klienti budou vzdy komunikovat we win1250 (jak ODBC tak WWW rozhrani)

Otazka zni:

Je mozne nejak zaridit, aby se prekodovani cestiny nastavilo vzdy
automaticky pri navazani spojeni bez nutnosti zadavat jako prvni prikaz 

SET CHARACTER SET cp1250_latin2

Rekneme ze na tom serveru mam dost databazi, mnoho PHP skriptu a neznamo
kolik klientu pristupujicich pres ODBC. Upravit vsechny skripty a
vypatrat vsehny pocitace pristupujici pres ODBC mi pripada vpodstate
nemozne, takze bych rad toto nastavil nejakou direktivou na trane
erveru.

Pokud takova moznost existuje a podari se mi ji odzkouset rad pote
vytvorim stranku s detailnim navodem jak na to pro dalsi zoufalce, kteri
me v teto snaze budou nasledovat.

Provozovany SW je:

MySQL 3.23.36
Apach 1.3.14
PHP 4.04
mod_ssl 2.7.1
OpenSSL 0.9.6
Csacek 2.1.15

honza

PS: Protoze to je off-topic, postnul jsem to i do
cz.comp.databases.misc, ale i sem, pokracuju v jiz zapocatem threadu.
-- 
<PRE>                         _______          ____
                              \___   |        |    |
 Jan Havlicek              _      \  |   _     \  /
 Vysoka Skola Ekonomicka  |-|   _\_| |__|_|__O__||__B<
 University of Economy    |-|---| +++     __________|)
 Prague CZ                |-|   | ++  ______________|)
 E-mail HAVLICEK na VSE.CZ |=|_|___|___________________|==|
                           -( + )<>-|-|( + )--( + )--\\\
 Keep smiling            ---------------------------------
</PRE>


Další informace o konferenci Linux