Kódování MySQL po X-té a teď už snad uceleně :-)

Ahoj, vím že tohle je tu každou chvíli, ale snažím se už pěknou dobu celé tohle pochopit. Prosím neodkazujte mé na google, tam už jsem přehlednou a českou odpověď hledal a nenašel. Anglicky sice trochu umím, ale ne tolik abych dokázal pochopit odborné výklady o kódování v SQL...

1) K čemu je přesně porovnávání sloupců tabulek zvlášť, porovnávání tabulek zvlášť, porovnávání databáze zvlášť když to je vlastně všechno v sobě? Co když mám každé porovnávání nastavené jinak, které se nakonec ve výsledku použije?

2) Jaký je rozdíl mezi pojmama "porovnávání" a "kódování" ?

3) Proč mi na každém serveru poradí pro správné kódování češtiny něco jiného?
- na jednom mi řeknou ať použiju "SET NAMES cp1250"
- na druhém zas že mám použít "SET character_set_results=cp1250, character_set_connection=cp1250, character_set_client=cp1250"
- na třetím zas že stačí si všechna porovnávání SQL nastavit přes PHPMyAdmina na cp1250_czech_cs

Teď k tomu, co je pro mě nejdůležitější:
4) Dejme tomu, že mám stránku, kódovanou přes windows-1250, a taky to mám nastavené v meta tagu.
a) Na jaké porovnávání mám nastavit sloupce v tabulkách v databázi?
b) Na jaké porovnávání mám nastavit tabulky v databázi?
c) Na jaké porovnávání mám nastavit celou databázi?
...všiml jsem si totiž, že tyhle 3 věci bývají někdy rozdílné.
d) Jaký příkaz/příkazy (asi jeden z těch co začínají slovem "SET ...atd.") si mám přidat do skriptu s připojením k databázi?

a,b,c,d) => ...abych si mohl být jistý, že můj web bude při dodržení těchto podmínek fungovat na jakémkoliv serveru?



Fakt vám opravdu moc děkuju, pokud mi někdo dokáže uceleně odpovědět. Zřejmě to bude první člověk na českém internetu, který toto dokázal uceleně popsat :-)
Nechce se mi odpovídat na ty všechny dotazy. De fakto jsem je zde ve fóru postupně už všechny odpověděl.

Zareaguji jen na něco. Nemyslím si, že existuje jakési ideální nastavení, které by jelo na všech serverech. Prostě proto, že servery se dají nastavit různě a vždy je třeba něco doladit. Tady na WZ funguje "SET NAMES cp1250".

Kódování je způsob zápisů a uložení neanglických znaků. Tyto znaky mají v různých kódovaních různá čísla.

Porovnávání je vlastně převodní tabulka ze základní znakové sady, ve které jsou znaky skutečně uložené v db (na WZ použito utf-8) do zvoleného kódování. Tedy, v databázi jsou neanglické znaky uloženy v utf-8 a nastavené kódování ve sloupci Porovnávání je jen odkaz na převodní tabulku z/do jakého kódování se znaky převádí při čtení a zápisu do databáze. Uživatel tam pošle text třeba ve win-1250, ale při skutečném uložení se převedou do utf-8. To samé při čtení. Teď záleží, jestli má správně nastaveno Porovnávání, jinak mu vznikne rozsypaný čaj.

Mám na WZ stránky v uft8 i win1250 a obě fungují i s databázi bez problémů.

Když chceš používat win1250, všechno tak nastav: meta tag, kódování textů, všechna nastavení porovnávání v MySQL na COLLATE=cp1250_czech_cs a "SET NAMES". Pak ti to pojede.

PS: Taky jsem začínal na win1250, nicméně teď už dělám weby jen v utf-8. Doporučuji.