Autor | Zpráva | ||
---|---|---|---|
spenciii Profil |
#1 · Zasláno: 5. 2. 2014, 18:59:11
Dobrý den,
žádám o radu, vyzkoušel jsem již mnoho způsobů nastavení kódování, ale zatím bez úspěchu, a proto žádám Vás. Kodování v phpMyAdmin mám nastaveno latin2_czech_cs V php kodu rovněž: mysql_query("SET CHARACTER SET latin2_czech_cs"); mysql_query("SET NAMES latin2_czech_cs"); htmlentities
A přesto se mi zobrazují pouze výsledky, které jsou bez diakritiky. Děkuji. |
||
Kubo2 Profil |
#2 · Zasláno: 5. 2. 2014, 19:00:52
spenciii:
„A přesto se mi zobrazují pouze výsledky, které jsou bez diakritiky.“ A máš ich v databáze uložené s diakritikou? |
||
spenciii Profil |
#3 · Zasláno: 5. 2. 2014, 19:02:16
Ano.
|
||
juriad Profil |
#4 · Zasláno: 5. 2. 2014, 19:05:11
spenciii:
Takže se neukazují špatně, ale neukazují se vůbec? |
||
spenciii Profil |
#5 · Zasláno: 5. 2. 2014, 19:05:43
Ano, vůbec se nezobrazují.
|
||
Kubo2 Profil |
spenciii:
Skúšal si použiť mysql_set_charset? // ... mysql_set_charset( "latin2_czech_cs" ); Zmenené: Je možné, že máš text v databáze uložený v inom kódovaní, ako máš nastavené (latin2_czech_cs). |
||
spenciii Profil |
#7 · Zasláno: 5. 2. 2014, 19:08:11
[#6]:
Ano, taktéž nefunguje. |
||
Kajman Profil |
#8 · Zasláno: 5. 2. 2014, 19:10:03
spenciii:
Nedávejte tam porovnání, ale jen kódování. Tedy latin2. |
||
spenciii Profil |
[#8]:
To lze jak, prosím? |
||
Fisir Profil |
#10 · Zasláno: 5. 2. 2014, 19:32:12
Reaguji na spenciiiho:
Prosím, pro příště se vyhněte rozšíření mysql_* . Je zastaralé a v příštích verzích PHP bude odstraněno. Můžete přejít například na mysqli .
|
||
Kubo2 Profil |
#11 · Zasláno: 5. 2. 2014, 19:35:38
spenciii:
„To lze jak, prosím?“ Jednoducho namiesto latin2_czech_cs napíšeš latin2 .
|
||
spenciii Profil |
|||
Kajman Profil |
#13 · Zasláno: 5. 2. 2014, 19:47:17
spenciii:
A opravdu máte stránky v kódování iso-8859-2? Můžete sem na ně poslat odkaz? Když se podívate adminerem do databáze, tak je diakritika v pořádku? |
||
spenciii Profil |
#14 · Zasláno: 5. 2. 2014, 20:16:10
[#13]:
Ano. Web je zatím pouze na localhostu, takže nemohu. Ano, diakritika je v admineru v pořádku. |
||
Kajman Profil |
#15 · Zasláno: 5. 2. 2014, 21:22:09
Kromě nastavení iso-8859-2 v hlavičce html si zkontrolujte i nastavení v http hlavičkách. Pokud ani tam chyba nebude, zkuste poslat větší kus problémovéh kódu, kde bude i vidět, kdy děláte přihlášeni (heslo nepotřebujeme), nastavení set names a dotaz, který se špatně zobrazí.
|
||
spenciii Profil |
I nastavení v http hlavičce je v pořádku.
Posílám kod pro připojení k databázi if($conn = mysql_connect($server="xxxx", $username="xxxx", $password="xxxx")) { mysql_query("SET CHARACTER SET latin2"); mysql_query("SET NAMES latin2"); mysql_select_db($database_name="knihovna"); Výstupní kod pro zobrazení na stránce: ..... if ($result=mysql_query("SELECT * FROM knihy ORDER BY Názevknihy")) { printf("<p>Počet záznamů: %d</p>\n", mysql_num_rows($result)); printf("<p>Počet sloupců: %d</p>\n", mysql_num_fields($result)); while($row = mysql_fetch_object($result)) { if ($row->Názevknihy) printf("<br />%s -- %s\n", htmlentities($row->Názevknihy), htmlentities($row->Autor)); else printf("<br />%s\n", htmlentities($row->Názevknihy)); } mysql_free_result($result); ..... Po tomto dotazu se zobrazí pouze záznamy, ve kterých není česká diakritika. |
||
Kajman Profil |
#17 · Zasláno: 6. 2. 2014, 07:07:02
htmlentities očekává řetězec v ISO-8859-1 nebo UTF-8, pokud mu neřeknete jinak. Navíc ISO-8859-2 není touto funkcí podporované.
A nemáte tam htmlentities omylem, nechcete tam spíše ošetřit html znaky díky htmlspecialchars (které ale také nemá podporu pro ISO-8859-2, ale nemělo by to spadnout)? |
||
spenciii Profil |
#18 · Zasláno: 6. 2. 2014, 12:35:48
htmlentities tam omylem nemám.S php a MySQL teď začínám, takže je možné, že jsem je použil ve špatném případě.
htmlspecialchars jsem zatím nepoužíval, poradil byste mi, prosím jak je implementovat do kodu . Mé pokusy skončily bezúspěšně. |
||
Kajman Profil |
#19 · Zasláno: 6. 2. 2014, 20:52:37
Zkuste si ten kód bez htmlentities, zda se vypíší všechny řádky. Pak zkuste dát htmlspecialchars na ty místa, kde je nyní htmlentities.
|
||
spenciii Profil |
Tak již je vše v pořádku, dle doporučení Fisira jsem kod překodoval na MySQLi.
Našel jsem procedurální styl z této stránky, který jsem v kodu použil: http://cz2.php.net/mysqli_set_charset A výsledný dotaz se nyní zobrazuje v tabulce a využívá kodování UTF-8 - česká diakritika se již zobrazuje bez problémů. Výstupní kod jsem zcela pozměnil (již neobsahuje htmlentities, ani htmlspecialchars) Všem zúčastněným děkuji za ochotu pomoci. |
||
Časová prodleva: 11 let
|
0