Mysql kódování

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Zbynas 9. 6. 2017 10:38

Dobrý den,

mám problém co se týče vyhledávání dikritiky, tak jsem změnil kódování databáze (včetně všech tabulek) z latinu na utf-8. V PHPmyadminu se zobrazuje KateÅ™ina místo Kateřina, ale když to vytáhnu zpátky a vypíšu na stránce, je to v pohodě. Ovšem když chci najít něco v tabulce (zadám katerina):
Kód: Vybrat vše
select * from customers WHERE name COLLATE utf8_czech_ci LIKE '%$name%'

tak to nejede.

Už v tom PHPmyadminu je evidentní, že je to zakodované špatně. Ale proč?

Celá DB i jednotlivé řádky ve všech tabulkách mají nyní nastavený utf8-czech-ci, čehož jsem docílil takto:
Kód: Vybrat vše
MySQL_Query("ALTER DATABASE $dbname CHARACTER SET utf8 COLLATE utf8_czech_ci");

                   $result=mysql_query('show tables');
                   while($tables = mysql_fetch_array($result)) {
                            foreach ($tables as $key => $value) {
                             mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_czech_ci");
                       }}


Nutno dodat, že i když po téhle změně zadávám nová data, pořád se kódují postaru.

-- 9. 6. 2017 11:21 --

Tak zásadní problém vyřešen:

Kód: Vybrat vše
header("Content-type: text/html; charset=utf-8");
mysql_set_charset('utf8');
mysql_query("SET SESSION character_set_results = 'UTF8'");


Co ale tohle neřeší je fakt, že mám v systému postaru uložená data. Jak to konvertovat? Přepisovat vše manuálně je na dva roky práce pro deset lidí :D

-- 9. 6. 2017 11:37 --

Tak klasicky problém teď nastal ve vypisování z databáze. Samozřejmě na webu se to zobrazuje tak, jako je to blbě uložené v databázi, takže to potřebuji nutně střelohbitě všechno konvertovat na UTF-8 decode. Jak? Jde to nějak v phpmyadminu? Když to zjistím dřív než vy, ozvu se :)
hlavní auto: Škoda Octavia II rv 2013 kombi 1.6 TDI 4x4 full palba
druhé auto: Subaru Legacy III rv 2001 kombi 2,5 benzin awd tramvaj
NVidia GTX 580, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 200 Mbps, Upload 20 Mbps, ping 8
VINOTÉKA U FREJKA
Zbynas
Junior
Uživatelský avatar

Odeslat příspěvekod Zbynas 10. 6. 2017 17:46

Tak stále jsem na to nepřišel, ale na googlu někde jsem našel online převod takových dat a pomocí "utf8 decode" se to překoduje jak má. Tak předpokládám, že to musí jít nějak i v phpmyadminu i za cenu toho, že bych si musel vytvořit nějaký skript. Ale ať dělám, co dělám, nemůžu na to přijít ... Tak jsem zatím nejdůležitější data přepsal ručně ..
hlavní auto: Škoda Octavia II rv 2013 kombi 1.6 TDI 4x4 full palba
druhé auto: Subaru Legacy III rv 2001 kombi 2,5 benzin awd tramvaj
NVidia GTX 580, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 200 Mbps, Upload 20 Mbps, ping 8
VINOTÉKA U FREJKA
Zbynas
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 10. 6. 2017 19:15

Vytáhni si data z tabulky/ek do array a použij
Kód: Vybrat vše
array_map( "utf8_decode", $array )

nebo
Kód: Vybrat vše
array_map( "utf8_encode", $array )

Trošku si s tím pohraj
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Zbynas 12. 6. 2017 16:35

Dík moc, jdu na to :)
hlavní auto: Škoda Octavia II rv 2013 kombi 1.6 TDI 4x4 full palba
druhé auto: Subaru Legacy III rv 2001 kombi 2,5 benzin awd tramvaj
NVidia GTX 580, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 200 Mbps, Upload 20 Mbps, ping 8
VINOTÉKA U FREJKA
Zbynas
Junior
Uživatelský avatar


  • Podobná témata
    Odpovědi
    Zobrazení
    Autor

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník