Autor | Zpráva | ||
---|---|---|---|
deadalos Profil * |
#1 · Zasláno: 10. 9. 2007, 15:48:11
Zdravíčko!
Předělávali jsme stránky z Windows-1250 do UTF-8 (konečně), to by samo o sobě nebyl takovej problém. Vtip byl v tom, že všechny naše články v databázi byly taky uložený v W-1250, byl to trochu boj, ale nakonec se nám všechen text povedlo překódovat do UTF. No jo, vše sice funguje, ale když selectuju z DB, tak se za boha nechce zobrazit ň (n s háčkem), místo toho se zobrazuje �?. Když se ale zapíše ň přímo do HTML, tak všechno jede, to znamená, že je něco nejspíš s kódováním v MySQL. Kódování stránek (index.php): <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Kódování v MySQL: utf8_general_ci (je to správně??, tech možností pro utf je tam mrtě...czech_ci, persian_ci, slovak_ci) Odkaz na stránky: http://derren.neco.cz/ |
||
djlj Profil |
#2 · Zasláno: 10. 9. 2007, 15:51:21
Po připojení k databáze proveď ještě SET NAMES utf8.
|
||
deadalos Profil |
#3 · Zasláno: 10. 9. 2007, 15:55:22
function OtevriDB($hostitel = "xxx", $uziv_jmeno = "xxx", $heslo = "xxx",
$DB = "xxx") { $navratova_hodnota = false; $spojeni = mysql_connect($hostitel, $uziv_jmeno, $heslo); if(!$spojeni) echo "Nepodařilo se vytvořit spojení s hostitelem $hostitel!"; else { $navratova_hodnota = mysql_select_db($DB); if (!$navratova_hodnota) echo "Nepodařilo se nastavit pracovní databázi $DB!"; } return $navratova_hodnota; } můžeš mi trochu pomoct:) |
||
djlj Profil |
#4 · Zasláno: 10. 9. 2007, 15:56:08
mysql_query("SET NAMES `utf8`");
|
||
peta Profil |
#5 · Zasláno: 10. 9. 2007, 15:56:32
http://www.volny.cz/peter.mlich/www.htm#main5
SQL kodovani dalsi problem muze byt PHP kodovani cz.php.net/header pak META tag v HTML A nejhorsi, kdyz je to spatne zakodovano v databazi. Treba jsme ted delali prevod na UTF za stare SQL. Nemenili jsme nic v programech... Jenze stara databaze se kodovala na latin1, ukladali tam data ve win-1250 a presne tak je to ted v te UTF-8. Takze troji kodovani. Legrace, kdyz nova verze programu jde prepnout na UTF a ted to musis vsechno prekodovat do utf :) |
||
deadalos Profil |
#6 · Zasláno: 10. 9. 2007, 16:10:27
Tak s META tagem jsem si stoprocentně jistej, SQL kódování bych měl mít podle http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html správně a mysql_query("SET NAMES `utf8`"); mi výběr z databáze předělá do mandarínštiny:). Data v DB jsou v UTF, stránky jsou v UTF, ěščřžýáíé se korektně zobrazuje, jediný ň...
|
||
peta Profil |
#7 · Zasláno: 10. 9. 2007, 17:32:10
deadalos
tak to mas spatne :) zkus nekam ulozit cast databaze do textaku (zip) ale pres mysqldump, linuxovy prikaz ne pres phpadmina a dej odkaz A nebo si N prekoduj |
||
deadalos Profil |
#8 · Zasláno: 10. 9. 2007, 18:23:40
peta
Asi sem vůl, ale jak jinak se dostat do databáze než přes phpAdmina?:) |
||
nightfish Profil |
#9 · Zasláno: 10. 9. 2007, 19:37:33
deadalos
jak jinak se dostat do databáze než přes phpAdmina třeba pomocí konzolového klienta mysql.exe (ve Windows), případně udělat výpis databáze pomocí mysqldump.exe kódování češtiny řeší hned první položka ve FAQ |
||
peta Profil |
#10 · Zasláno: 10. 9. 2007, 22:22:27
deadalos
normalnim PHP souborem <? header() // charset pripojeni... mysql_query("SET NAMES"); $v = mysql_query("dotaz"); $t = ""; while ($row = mysql_fetch_array($v)) { $t.="<tr>"; foreach ($row as $key=>$value) {$t.="<td>".$value."</td>";} $t.="</tr>"; } $tt="<tr>"; foreach ($row as $key=>$value) {$tt="<th>".$key."</th>";} $tt.="</tr>"; echo "<table>".$tt.$t.$tt."</table>"; ?> jinak teda jsem mel na mysli spustit pres php prikaz exec / dalsi 2, tusim system a jeste neco cz.php.net/exec cz.php.net/system linuxovy prikaz dump resp vystup tohoto prikazu si zobrazit na obrazovku, zapsat do souboru... Ten prikaz totiz pouzije takove pripojeni, jake ma nastavene default databaze a ne jake ti pri exportu a importu vnucuje myadmin. Neco podobne, kdyz ve svem programu vyhodis meta, header a set names. Pak ve FF poprepinas kodovani a v takovem kodovani to je ulozene do UTF8, pokud mas ve strukture tabulky (v phpadminu) varchar sloupce s collate utf8. Cili, pokud cisty vystup bez zmen kodovani poprepinas v prohlizeci na utf8 a tabulky nas utf8, pak mas spravne kodovani. Pokud poprepinas a mas spravne kodovani, i N s hackem ale je to v prepnutem win1250, pak to mas spatne. latin1 = iso-2 mam pocit a prave na tech haccich je to odlisne na win-1250. |
||
Časová prodleva: 17 let
|
0