Autor Zpráva
sloncz
Profil
Hezký večer, narazil jsem na chybu, že mi mysql při výpisu dat vypisuje místo normální znaků, znaky �.
mysql databázi mám nastavenou na porovnávání utf8_czech_ci, stránku mám taktéž nastavenou jak v pspadu tak v html na urf kodování a ve scriptu mám

mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf-8'");

ale i tak, bez úspěchu. Byl by někdo tak moc ochotný a poradi mi? Předem děkuji.
juriad
Profil
Bez té pomlčky; viz:
mysql_query("SET NAMES 'utf8'");

Také zvaž, zda neopustit mysql_* rozhraní, které bude v budoucnu odstraněno.
lionel messi
Profil
sloncz:
Na 3. riadku je chyba, správne:

mysql_query("SET NAMES utf8"); //bez pomlčky

Netušíme, akú verziu MySQL používaš, ale ak nebude fungovať zmienený kód vyššie, mohlo by ti pomôcť nahradiť ho za:

mysql_set_charset("utf8");
Monkeys
Profil *
sloncz:

hmm dal by som to bez tych apostrofov skus

M.
sloncz
Profil
Děkuji za rady, vyzkoušel jsem jak
mysql_query("SET NAMES 'utf8'");
tak i
mysql_set_charset("utf8");

ale bez úspěchu, stále mi to ukazuje jen otazníky. Přitom v databázi jsou ty znaky v pořádku.
Monkeys
Profil *
sloncz:
mysql_query("SET NAMES UTF8");

to musi fungovat
Keeehi
Profil
A kódování stránky? <meta ...
sloncz
Profil
ano, meta tag s utf9 mám nastaven a soubor je taktéž v utf8 kodovani a ne, ani mysql_query("SET NAMES UTF8"); nefunguje
Fisir
Profil
Reaguji na sloncza:
A v Admineru/PHPMyAdminu vidíš ta data správně (tj. bez otazníků)?
sloncz
Profil
Ano, v phpmyadmin jsou ty data v pořádku, písmena +ěščřžýáíé tam jsou vidět bez problému.
rafej
Profil
Zkus tohle:

mysql_query("SET NAMES utf8 COLLATE utf8_czech_ci;");
Kubo2
Profil
rafej:
COLLATE s tým nemá nič, slúži ako nastavenie kódovania pri porovnávaní reťazcových dát.
bestik_63
Profil
máš v html nastaveno : <meta charset="UTF-8">?
sloncz
Profil
[#13] bestik_63 ano, už jsem to psal o pár zpráv výše.

Děkuji všem za rady, vyřešeno. Zjistil jsem, že nově přidané záznamy se už vypisují v pořádku, jen ty staré ne.
rafej
Profil
Kubo2:
Já už zažila, že to roli hrálo. Souviselo to s vnitřní výchozí konfigurací na Windows, kdy použití pouze samotného SET NAMES nepřepsalo výchozí nastavení a dělalo při komunikaci chyby.

sloncz:
Můžeš mít starý obsah v jiném kódování, než je v tabulce zapsáno.

Nebo to může být nekompatibilita při změně verze mysql. Tuším, že jsem něco podobného zažila při přechodu z verze 5.0 na 5.1.

Udělej si zálohu DB do souboru nebo jiné DB. A vyzkoušej tohle:

- pro celou tabulku
ALTER TABLE t1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_czech_ci;

- pro sloupec c1
ALTER TABLE t1 MODIFY c1 CHAR(N) CHARACTER SET utf8 COLLATE utf8_czech_ci;

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: