Autor Zpráva
jirkasak15
Profil
Ahoj, mohl by mi někdo říct kde dělám chybu?

- v MySQL jsem si udělal nvou db s porovnáváním utf8_general_ci
CREATE DATABASE `cervenka` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


- vytvořim novou tabulku
CREATE TABLE autori (id INT UNSIGNED not null AUTO_INCREMENT, login VARCHAR (20) not null , pass CHAR (32) not null , 
jmeno VARCHAR (255) not null , email VARCHAR (255) not null , oautorivi TEXT not null , prava TINYINT UNSIGNED DEFAULT '1' not null , 
stav CHAR (1) DEFAULT 'n' not null , PRIMARY KEY (id)); 


- přidám data
INSERT INTO autori VALUES('','admin','8fa14cdd754f91cc6554c9e71929cce7','Jiří Kocman','kocman@ecentrala.cz','Šílenec',3,'a'); 


- nechám vypsat
<html>
<head>
<title>Výpis dat z tabulky <?php print $cfg['MySQL_Table']; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<h1>Výpis dat z tabulky <?php print $cfg['MySQL_Table']; ?></h1>

<p>Počet řádků v tabulce:
<?php
print MySQL_Num_Rows($Sql);
?>
</p>

<table border="1">
<tr>
<?php
for ($i=0; $i<MySQL_Num_Fields($Sql); $i++)
{
    $Field = MySQL_Fetch_Field($Sql, $i);
    PrintF ('<td>%s</td>', $Field->name);
}
while ($data = MySQL_Fetch_Array($Sql))
{
    print '<tr>';
    for ($i=0; $i<MySQL_Num_Fields($Sql); $i++)
    {
        PrintF ('<td>%s</td>', $data[$i]);
    }
    print '</tr>';
}
?>
</tr>
</table>

</body>
</html>


- když nechám provéct php code tak mi data z MySQL db vypíše bez diakritiky a data z php souboru jako např:"Počet řádků v tabulce:" vypíše s diakritikou.

Dík za odpověď.
Audio
Profil *
Pravděpodobně je skript uložen v jiném kódování než data v DB (UTF-8). Pro opravu by mělo stačit udělat následující dvě věci:

1/ změnit kódování znaků souboru na UTF-8 (to zvládne třeba Notepad++ nebo každý lepší textový editor)
2/ na začátek PHP skriptu (před jakýkoliv výstup) vložit
header('Content-type: text/html; charset=utf-8');
jirkasak15
Profil
dik problem vyřešen ...
jirkasak15
Profil
hele furt ten samej problem, soubor mám uloženej v UTF-8 kodování, ale nic se nemění, a když nastavim znakovou sadu prohlížeče na windows-1250 výpis z db je OK ale zase není správně text z php souboru.
Tori
Profil
Některé časteji řešené dotazy pro MySQL - FAQ nepomůžou?
jirkasak15
Profil
pomohlo / nepomohlo, když za každý connect
vložím mysql_set_charset("utf8"); 
tak se mi znaková sada rozšířila a pár znaků s diakritikou, ale furt tan něco chybí. Chybějící znaky se teď nezobrazujou jako ale jako ø.
Tori
Profil
jirkasak15:
když nastavim znakovou sadu prohlížeče na windows-1250 výpis z db je OK
.. takže byste místo utf8 měl použít cp1250
jirkasak15
Profil
cp1250 vůbec nic nemění.
polly.90
Profil
Vím že píšu půl roku po poslední reakci, ale taky jsem to teď řešil a narazil jsem na tuhle stránku, která mi nepomohla. Hledal jsem dál, až jsem řešení našel, tak kdyby se sem zase někdy dostal někdo kdo bude hledat řešení, tak mi pomohlo dát před výpis z mysql toto:
mysql_query("SET NAMES `utf8`");, popřípadě za utf-8 dosaďte své kódování, které používáte v mysql. Toto kodování se samozřejmě musí shodovat s kódovaním použitým v meta.
Medvídek
Profil
polly.90:
IMHO stačilo si přečíst radu od Tori, Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština a na prvním žádku je:
Pokud máte češtinu v databázi v pořádku, ale v php ne, většinou stačí po každém connectu zavolat
mysql_query("set names utf8"); //(utf8 nahraďte za cp1250 pro stránky ve windows-1250 a latin2 pro iso-8859-2)

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