kodovani mysql

Richard Willmann ml at foofree.sk
Tue Apr 8 20:52:14 CEST 2008


>> sorry za trochu OT dotaz, ale jak se mysql presvedci, aby defaultne
>> pouzivala znakovou sadu utf-8?
>
> Zalezi jakou uroven "defaultu" mas na mysli. A taky je otazka, jestli
> se ptas na kodovani serveru nebo klienta.
>
> Kodovani je napsano (v poradi v jakem se hleda) u sloupce tabulky, u
> tabulky, u databaze, v konfiguraci serveru, zakompilovano v serveru. U
> serveru.
>
> U klienta v konfiguraci (ta se ale nepouzije vzdy, zalezi na aplikaci,
> ktera knihovnu pouziva) a pak je zakompilovano.

toto by som radsej uviedol na pravu mieru. V kontexte s MySQL hovorime o 
troch kodovaniach. Kodovanie v akom komunikuje klient so serverom, atd. (vid 
doc)

To co pise Dan je malicko inak (alebo som prispevok nespravne pochopil :). 
Data su ulozene v "nejakom" kodovani. Toto kodovanie sa definuje na urovni 
stlpca. Ak nie je definovane, pouzije sa "default" hodnota z tabulky. Ak ani 
tam, tak databazy. atd.

Pri MySQL je castym problemom "default" kodovanie "serveru" ako takeho. Toto 
nastavenie sa dalej pouziva na roznych miestach. Implicitne je to latin1. 
Uvodzovky som pouzil preto, lebo to nastavenie pouziva aj klientska kniznica 
MySQL a pouzije ho ako kodovanie, v ktorom sa bavi so serverom. Jedinou 
cestou zmeny je "WITH_CHARSET=..." pri make install clean v portoch.

Ak uz ale mas zkompilovany a nainstalovany MySQL, riesenia su dve:

* po kazdom volani connect() v aplikacii vykonat "SET NAMES XXX"

* pridat do /etc/my.cnf "init-connect='SET NAMES XXX'" (toto nie je 
najstastnejsie, vykona sa to vzdy po kazdom prihlaseni s vynimkou pripadu, 
ze je prihlasenym pouzivatelom root, dopad na vykon je ale minimalny)

Kodovanie MySQL je vseobecne tazko pochopitelne, skus napisat viac co myslis 
"defualt kodovanim" pripadne napis viac o probleme, ktory sa snazis 
vyriesit.

d.
rwi




More information about the Users-l mailing list