[PHP, MySQL] záhada s kódováním
Ahoj,
draze koupený program v PHP ukládá špatně češtinu do DB (MySQL5), protože autor nepředpokládá vyšší verzi než MySQL4. To že jsou v DB slátaniny a nefunguje správné řazení bych ještě překousl. Interně jsem nastavil UTF8-bin, takže na vstupu i výstupu z programu je diakritika správně.
Ale teď potřebuju přistupovat k těmto datům se své aplikace a hledám způsob jak co nejsnáz předkládat rozdíly. Metodou pokus-omyl jsem se dostal až do fáze, kdy funguje vše kromě Š/š, ale než použiju stupidní funkci na překlad znaků, zajímalo by mě, jestli jste se s něčím podobným nesetkali a nejde to řešit nějakou správnou kombinací SET NAMES/CHARSET, případně jinak.
PS: do toho jejich programu zasáhnout nemůžu..
Re: [PHP, MySQL] záhada s kódováním
No, setkal, ale mě prostě pomohlo SET NAMES 'utf8' po kazdem pripojeni.
Re: [PHP, MySQL] záhada s kódováním
Citace:
Původně odeslal
howard
No, setkal, ale mě prostě pomohlo SET NAMES 'utf8' po kazdem pripojeni.
To jo, ale jen v případě, že jejich programátor není ....:mad:
Re: [PHP, MySQL] záhada s kódováním
/etc/mysql/my.cnf:
[mysqld]
init_connect = "SET NAMES utf8"
Re: [PHP, MySQL] záhada s kódováním
Citace:
Původně odeslal
Rainbow
init_connect = "SET NAMES utf8"
Hmm, tento parametr vidím poprvé :o
Znamenalo by to sice překlopení celé jejich DB, ale zase by to definitivní řešení.
Re: [PHP, MySQL] záhada s kódováním
To som niekde vyhrabal, ked sme s PiTom prerabali jeden stary server a vsetky databazy a weby boli spravene v cp1250 - takze tam to bolo v tvare "SET NAMES cp1250". A vyriesilo to problem s upravovanim vsetkych webov.
Re: [PHP, MySQL] záhada s kódováním
Seznam se s fungovanim MySQL ;).
a) kodovani ve kterym jsou data, je dany nastavenim konkretni DB/tabulky/sloupecku (pripadne defaultem pro cely server).
b) kodovani dane konexe, je NUTNE nastavit bud opet defaultem nebo je mozne jej nastavit jako parametr pri pripojeni k databazi. Srv sam zajisti prekodovani (pokud je kodovani konexe jine nez nastaveni datoveho pole).
c) kodovani ve kterym se zobrazuje web = to co posila apache a spol.
Je potreba si ohlidat aby jednotlivy prvky tyhle cesty byly v souladu. Samo ze pokud nechces pouzivat prekodovani, muzes si do DB nastaveny na cojavim ISO ukladat win/utf, ale presne jak pises, jednou s tim narazis.
Re: [PHP, MySQL] záhada s kódováním
Tak jsem to dneska zkusil, editoval my.cnf, restatoval server, ale žádná změna. Ta aplikace pořád funguje ve svém pseudokódování a do DB se ukládá rosypanej čaj.
ad Jezevec: tohle je jasne, ale na to musi myslet ten kdo ten PHP kod pise, jinak je to tezky.., viz tento thread.
Re: [PHP, MySQL] záhada s kódováním
Ja musel rucne zeditovat (tj. pomoci vimu nahrazovat znaky) dumpnutou databazi, protoze "programator" ukladal CP1250 kodovanou cestinu do databaze nastavene na Latin1 :rolleyes:
Celej ten web sem predelal na UTF8, databazi take do UTF8 a chodi to naprosto bez problemu.
Re: [PHP, MySQL] záhada s kódováním
ad Caleb: hmm, to by nebyl problem. Vtip je v tom, ze kdyz opravim dump, v aplikaci se zobrazuji nesmysly. Nevim jake kodovani to z MySQL ocekava, ani jestli nejak cestinu upravuje. Takze po nekolika pokusech jsem to proste primo v administraci toho systemu "opravil" aby uzivatele meli citelny vystup. Ovsem v databazi je maglajz.