Autor | Zpráva | ||
---|---|---|---|
SOS Profil * |
#1 · Zasláno: 6. 8. 2011, 11:24:28
<?php include 'config.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Titulek</title> </head> <body> <?php if($pripojeni = @mysql_connect($mysqlhost, $mysqluser, $mysqlpass)) { mysql_select_db($mysqldb); mysql_query($sql); $sql="SET character_set_client=utf8"; mysql_query($sql); $sql="SET character_set_results=utf8"; mysql_query($sql); $sql="SET character_set_server=utf8"; mysql_query($sql); if($vypis=mysql_query("SELECT * FROM uzivatele ORDER BY email")) { printf("<p>Počet záznamů: %d</p>\n", mysql_num_rows($vypis)); printf("<p>Počet sloupců: %d</p>\n", mysql_num_fields($vypis)); // Vypíše tabulku echo "<table>"; while ($polozka = mysql_fetch_object($vypis)) echo "<tr><td>".htmlentities($polozka->jmeno)."</td><td>".htmlentities($polozka->prijmeni)."</td></tr >\n"; echo "</table>"; mysql_free_result($vypis); } } else { printf("<p>Připojení k serveru MySQL se nezdařilo! %s</p>\n", mysql_error()); } mysql_close($pripojeni); ?> </body> </html> Zajímavé je, že dokument je v UTF8, charset v dokumentu je taky UTF8 DB je UTF_chzech_ci zkoušel jsem s fora kde co, ale výsledek žádný... Poradíte? |
||
Petr ZZZ Profil |
#2 · Zasláno: 6. 8. 2011, 12:27:48
|
||
SOS Profil * |
#3 · Zasláno: 6. 8. 2011, 12:34:26
V čem přesně je to rozbité? Data z databáze mysql se mi vipisují, ale ve špatném kódování...
Nemám problémy s vypsáním dat, ale s jeho znakovou sadou... Počet záznamů: 1 Počet sloupců: 27 JmÃno PÅ�Ãjmenà // Má tam být Jméno a Příjmení |
||
Kry5 Profil |
#4 · Zasláno: 6. 8. 2011, 12:43:48
SOS:
Dokud se ti data budou "vipisovat" tak ti asi nikdo moc neporadí... Jinak pokud používáš v db jinou znakovou sadu než v aplikace podívej se k čemu slouží mysql_set_charset |
||
SOS Profil * |
#5 · Zasláno: 6. 8. 2011, 13:06:55
http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=122934
Zde se řeší úplně stejný problém: Stejné kodovaní musí být nastaveno ve třech místech: 1) V databazi 2) soubor musí být uložen v potřebnem kodovaní 3) v meta tágu Všechno splňuji, proč mi to tedy nefunguje, musí se udělat ještě něco? |
||
Taps Profil |
#6 · Zasláno: 6. 8. 2011, 13:10:10
SOS:
zkoušel jsi níže uvedené ? mysql_query("set names utf8"); |
||
SOS Profil * |
#7 · Zasláno: 6. 8. 2011, 13:18:18
Ano, jak jsem psal, prohlédl jsem si zdejší diskuzi, ale nic mi nepomohlo, vůbec tomu nerozumím... ;-)
Zkusím ještě pohledat, ale toto vlákno můžete zamknout(nebo smazat), protože vše co jsem našel mi tu stejně vypisujete... Ale i tak díky. |
||
Davex Profil |
#8 · Zasláno: 6. 8. 2011, 13:40:30
SOS:
Obecně by mělo stačit nastavení podle Tapse. 1) Když si záznamy vypíšeš v phpMyAdminu, tak je čeština správně? 2) Přepne se prohlížeč na správnou znakovou sadu (např. ve Firefoxu nabídka Zobrazení » Znaková sada) nebo je tam nějaká jiná než UTF-8? |
||
SOS Profil * |
#9 · Zasláno: 6. 8. 2011, 14:04:50
Vím že tu píšu moc kódů, ale postupoval jsem takto:
V administraci jsem si vytvořil db s porovnámím utf_czech_ci poté jsem se přihlásil do mysql databáze a vyvolal sql dotaz: SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; CREATE TABLE IF NOT EXISTS `uzivatele` ( `email` varchar(255) NOT NULL, `jmeno` varchar(45) DEFAULT NULL, `prijmeni` varchar(45) DEFAULT NULL, // A DALŠÍ SQL sloupce PRIMARY KEY (`email`), KEY `FK_users_cities` (`blizkemesto`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; // utf8 Poté přes php admina naplnil db zkušebními daty vytvořil html dokument a vložil tam toto <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> // a další html tagy <?php if($pripojeni = @mysql_connect($mysqlhost, $mysqluser, $mysqlpass)) { mysql_select_db($mysqldb); mysql_query("set names utf8"); if($vypis=mysql_query("SELECT * FROM uzivatele ORDER BY email")) { printf("<p>Pocet záznamu: %d</p>\n", mysql_num_rows($vypis)); printf("<p>Pocet sloupcu: %d</p>\n", mysql_num_fields($vypis)); // Vypíše tabulku echo "<table>"; while ($polozka = mysql_fetch_object($vypis)) echo "<tr><td>".htmlentities($polozka->jmeno)."</td><td>".htmlentities($polozka->prijmeni)."</td></tr >\n"; echo "</table>"; mysql_free_result($vypis); } } else { printf("<p>Pripojení k serveru MySQL se nezdarilo! %s</p>\n", mysql_error()); } mysql_close($pripojeni); ?> Podle toho jak to popisuji, by to vše mělo být správně že? |
||
SOS Profil * |
#10 · Zasláno: 6. 8. 2011, 14:07:47
Davex:
> 1) Když si záznamy vypíšeš v phpMyAdminu, tak je čeština správně? > 2) Přepne se prohlížeč na správnou znakovou sadu (např. ve Firefoxu nabídka Zobrazení » Znaková sada) nebo je tam nějaká jiná než UTF-8? Ano v phpmyadminu se znaky zobrazují správně... Ano prohlížeč má správnou znakovou sadu, všude jsou háčky a čárky, jen chybí tam kde php script volal data z DB. |
||
SOS Profil * |
#11 · Zasláno: 6. 8. 2011, 14:27:02
Už jsem na to přišel:D.
Za vše může tento výraz: echo "<tr><td>".htmlentities($polozka->jmeno)."</td><td>".htmlentities($polozka->prijmeni)."</td></tr >\n"; Správně zde má být toto: echo "<tr><td>".($polozka->jmeno)."</td><td>".($polozka->prijmeni)."</td></tr >\n"; Jak se ale řeší třeba stav když dá někdo do jména atribut </div> Předem děkuji za další vysvětlení. |
||
Davex Profil |
#12 · Zasláno: 6. 8. 2011, 15:43:08
SOS
„Jak se ale řeší třeba stav když dá někdo do jména atribut </div> “
Uživatelský vstup se před výpisem na stránku ošetří pomocí funkce htmlspecialchars() .
|
||
Časová prodleva: 13 let
|
0