Autor Zpráva
deadalos
Profil *
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
Po připojení k databáze proveď ještě SET NAMES utf8.
deadalos
Profil
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
mysql_query("SET NAMES `utf8`");
peta
Profil
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
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
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
peta
Asi sem vůl, ale jak jinak se dostat do databáze než přes phpAdmina?:)
nightfish
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0