UTF-8 a MySQL - problem so spravnym ukladanim textu
v Mysql som vytvoril databazu s kodovanim UTF-8. Mysql bezi pod linuxom, apache s php na tom istom linux stroji tiez.
Ked v nej vytvorim tabulku takisto s kodovanim UTF-8 a do nej vlozim cez phpmyadmin text v kodovani UTF-8, ktory obsahuje napriklad znaky ako je ö,Ö, tak tieto sa mi potom v aplikacii (oscommerce) zobrazuju zle - nie je tam ten znak, ale len znak s otaznikom. Haluz je ze oscommerce je nastaveny na UTF-8 - ked pozriem vo firefoxe, tak ten je tiez spravne na UTF-8. Ked to zeditujem vo firefoxe v oscommerce a dam tam spravny znak, tak zase v phpmyadmin vidim inu kombinaciu znakov (Niederösterreich) a nie spravny znak ö. V com je problem?
Ked to zhrnem - tak kazda aplikacia (phpmyadmin a oscommerce) vklada do databazy text nejako inak - ked vlozim v phpmyadmine, nezobrazi sa korektne v oscommerce a naopak. V oscommerce mam nastavene CHARSET na UTF-8. Ked skontrolujem vo firefoxe (cez View->Character Encoding) tak aj phpmyadmin aj oscommerce tam automaticky voli UTF-8. Neviem preco teda kazdy vklada text inak...
Pre pridávanie komentárov sa musíte prihlásiť.
v_nick varchar(32) character set utf8 collate utf8_general_ci not null,
predtym nez vlozis data cez commandline mysql pouzi:
set names "utf8";
insert into ...
V php takisto hned po pripojeni na db zavolaj
mysql_query('set names "utf8"');
V html nastav spravny content type do meta
header('Content-Type: text/plain; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Over to pomocou wget --save-headers
Ak vsetko ok chyba je v oscommerce
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
<form action="" method="POST">
<label>Text na "preklad": </label>
<input type="text" name="msg">
<input type="submit" value="Uložit">
</form>
<?php
if($_POST['msg']){
mysql_query("INSERT INTO `tvoja DB`.`tvoja tabulka` (`nejaka_kolonka`) VALUES ('".htmlspecialchars($_POST['msg'])."',)");
echo 'Zadali ste: '.$_POST['msg'];
}
?>
Eventuelne by ti to malo do DB zapisat to co si napisal do kolonky, ak si spravne zadas parametre ake pouzivas v tvojej DB coze nazov DB, nazov tabulky. Neboj sa aj mne trvalo kym som na to prisiel ;) ,
Pre ine otazky mi pisni na mail xtm1@azet.sk
XTMadmin
PS: ten skript ktory som ti napisal som neskusal, takze neviem ci niekde nieje chybycka v uvodzovkach alebo podobne ;)