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 * |
#2 · Zasláno: 26. 6. 2011, 04:38:20
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 |
#3 · Zasláno: 26. 6. 2011, 20:54:02
dik problem vyřešen ...
|
||
jirkasak15 Profil |
#4 · Zasláno: 28. 6. 2011, 22:19:30
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 |
#5 · Zasláno: 28. 6. 2011, 22:34:05
|
||
jirkasak15 Profil |
#6 · Zasláno: 28. 6. 2011, 22:51:50 · Upravil/a: jirkasak15
pomohlo / nepomohlo, když za každý connect
vložím mysql_set_charset("utf8"); |
||
Tori Profil |
#7 · Zasláno: 28. 6. 2011, 22:56:52
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 |
#8 · Zasláno: 28. 6. 2011, 23:03:55
cp1250 vůbec nic nemění.
|
||
Časová prodleva: 8 měsíců
|
|||
polly.90 Profil |
#9 · Zasláno: 18. 2. 2012, 01:17:29
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)
|
||
Časová prodleva: 12 let
|
0