Po x letech jsem se přihlásil do phpmyadmina a chtěl exportovat starou databázi. Ale ať dělám cokoli, vždy jsou v textovém souboru místo š,ž pouze otazníky. Ať jej exportuju jako utf,latin2,cp1250... na webu je kódování v pořádku, SET NAMES nepoužívám. I v phpmyadminovi jsou otazníky.
Nějaká rada?
Pokud je problém s "š", "ž", tak zároveň bude problém i v "ť". Je to kolize mezi win1250 a iso-8859-2. Podívej se, co máš ve sloupcích Porovnávání.
Databázi můžeš vyexportovat i přes prohlížeč a PHP skript.
Tím, že existuje více kódování, si počítačový svět zadělává na problémy. V prvé řadě je třeba vědět v jakém kódování je databáze a od toho se řídit.
Pokud je db v utf-8, tak se musí i v editoru otevřít v utf-8. Poznámkový blok, nebo file manažéry defaultně zobrazují win1250. Tudíž se takový soubor zobrazí špatně.
Obecně phpMyAdmin si s kódováním nedělá hlavu. Prostě to neřeší. Ať už máte db v utf-8 a samotné phpmyadmin nastavíte také na utf-8, tak stejně to zobrazí špatně.
Na samotný export a následný import to kupodivu funguje správně.
=Tomík=
>"Na samotný export a následný import to kupodivu funguje správně."
Jak kdy, většinou asi ano, ale jedna verze (číslo si nevzpomenu), kterou jsem měl na localhostu, s tím měla docela problém :)
=crazy=
Zkus si "exportovací" skript napsat sám s použitím SET NAMES - to problém určitě vyřeší..
___
Častým problémem je, že někteří tvůrci obsahu databázi klidně vkládají např win1250 data do tabulky s charsetem iso8859-2. Dostat tyto data z tabulek srávně je potom ještě větší oříšek :)
Vida, exportovat to přes php mě nenapadlo. Díky za nakopnutí, kódování už je ok.
Nemám moc odvahu vyzkoušet export a následně import, který jak píšete "někdy funguje".
Mohl by tu prosím někdo uvést celý způsob, který by fungoval?
Prostě musíš mít všude mít nadefinované stejné kódování. Přesto někdy je to boj. :-)
Když to vyexportuješ do souboru, tak s tim zkusim chvíli kejklit třeba s nějakym PSPadem a napravit to kódování, těžko se to může pokazit tolik aby to nešlo zase spravit... Buď bude stačit to ručně otevřít v nějakém kódování, nebo pomůže to otevřít jako nějaké kódování, uložit jako jiné kódování, otevřít jako ěště jiné kódování..... ;-) Když si takhle budeš hrát s tim souborem co sis vyexportoval tak navíc nic neriskuješ, když se ti to povede ještě víc pokazit tak to vždycky můžeš vyexportovat znova, a časem se to většinou podá. Na jakpsatweb (i jinde) byla někde stránka o tom, jak odhadnout, v jakym kódování je text.
http://www.jakpsatweb.cz/cestina-problemy.html
Pěkné vysvětlení najdeš na http://www.webzdarma.cz/forum/read.php?f=5&i=11079&t=11079
Kódování je buď latin1 (iso-8859-1) nebo latin2 (iso-8859-1).
Ono je to ještě trochu složitější:
a) zobrazíme si phpmyadmina a koukneme na charset stránky
b) zvolíme databázi a koukneme v jakém je kódování - už tady může být rozdíl
c) nevíme (a nemůžeme vědět) kódování použitého editoru při uploadu phpmyadmina na server (charset stránky ani kódování databáze nemusí být směrodatné)
d) stáhneme si zálohu db (třeba ve formátu .sql)
e) otevřeme si ji v PC v nějakém textovém editoru (který dokáže - nebo nedokáže) správně interpretovat původní (ale který vlastně?) charset
f) při pokusu zpětně nahrát data do databáze můžou vzniknout komplikace kombinací předchozích bodů a) až e)
Vím že to je pomalu groteska, ale bohužel reálná. Takže nezbývá, než si s databázemi, phpmyadminy a editory patřičně vyhrát. Nějaká 100%-ní metoda neexistuje! :-)
Lama: Pochopil jsi ten můj odkaz? Jádro problému je chybějící SET NAMES. Není-li použit, tak se to celé posere. Je-li použit, tak vše zobrazí v pořádku.
A jelikož není použit uživatelský SET NAMES, tak se místo toho použije kódování nastavené v mysql.