
Mysql db problém s češtinou
Ahoj, dostal se mi pod ruku na opravu jeden strý php web s tím, že tam blbne diakritika... koukal jsem do DB a text je tam třeba takto:
Chcete se stát Äleny našeho teamu?
A na webu se zobrazí:
Chcete se stát �?leny našeho teamu?
Už se tu s tím patlám celý den a nevím co s tím...
DB má nastaveno latin1_swedish_ci, a tabulky utf-8.
Zkoušel jsem v php iconv, pa jsem přímo v db zkusil toto: http://stackoverflow.com/questions/9407834/mysql-c onvert-latin1-characters-on-a-utf8-table-into-utf8 (to zmizel text úplně, naštěstí mám zálohu) a už nevím co s tím... díky za pomoc!
Web a DB by měly mít nastavenu stejnou kódovou stránku. Pokud to tak není, musí se provádět konverze v rámci jednotlivých dotazů a to je hloupý přístup.
Takže začni tím, že pro stránky nastavíš kódování UTF-8
j, to jsem zapomněl napsat, v hlavičce mám metaeta http-equiv="Content-Type" content="text/html; charset=utf-8"
pak jsem ještě převedl všechny soubory na utf-8 (některé byly win1250 a některé iso-8859)
teĎ jsem v takovém stavu, že když dám v samotném/čistém php dotaz do db a pak dám echo utf8_decode($text_z_db); tak už se část textu zobrazí dobře, ale stále tam jsou chyby - např.:
edit:
na stránkách encodedecode.aspx jsem zkusil ten to konkrétní text zkonvertovat z iso-8859-2 do utf8 a bylo to ok...ale v php se mi to nedaří
Takže typický bordel. V DB není text uložený v UTF-8.
A protože text není uložen v UTF-8, tak se při překódování z "něčeho" do UTF-8 zmrší diakritika.
Tohle jednoduše neopravíš, budeš to muset opravovat jednotlivě přímo v DB
hmm, tak jsem předělal db tabulky na utf8 a když se do DB vloží text v čj, nebo se upraví ten co tam je, tak je to ok, ale ty starý se budou muset nějak předělat ručně
nějaký tip jak to efektivně udělat?
Nechápu jak to na starém serveru fungovalo...
Vybrat tabulky a v nich sloupce, ktere obsahuji texty
Najít si špatně překódované znaky
Napsat si skript (Update příkazy), které pak provedou nahrazení ve sloupci v celé tabulce
Neškodilo by použít hledání v archivu Poradny. Nastavit kódování pomocí SET NAMES jsi zkusil?
http://pc.poradna.net/q/view/45695-diakritika-a-my sql
http://pc.poradna.net/q/view/451174-php-a-mysql-ko dovani
http://pc.poradna.net/q/view/876289-php-zmena-kodo vani-z-databaze?
http://pc.poradna.net/q/view/101268-mysql-5-a-cesk e-znaky?
http://pc.poradna.net/q/view/1648676-spatne-kodova ni-html-stranky
http://pc.poradna.net/q/view/1356720-mysql-php-dia kritika?
http://pc.poradna.net/q/view/248282-cestina-s-hack ama-a-php-mysql
atd...
ahoj, jj, sdet names jsem zkusil jako první... ale díky za odkazy, projdu je a dám vědět...