Autor Zpráva
Berny
Profil
Nazdárek,
mám problém, který se mi stále nedaří vyřešit. Díval jsem se zde, jestli něco podobného tady nebylo již řešeno, ale nic s podobným problémem jsem nenašel.

Mám phpMyAdmina, kde mám nastaveno:
Znakovou sadu na: UTF-8 Unicode (utf8)
Znakovou sadu připojení: cp1250_czech_cz

Problém nastává ve 2 případech. Když si chcu prohlídnout obsah tabulek prostřednictvím PMA - české znaky se mi nezobrazí správně a další problém nastane, když se do DB snažím vložit nové data, které obsahují diakritiku (bez diakritiky se mi data vloží v poho) prostřednictvím jak webu, tak PMA. Na stránce se zobrazuje vše správně.

Řekl bych, že problém je v nastavení porovnávání.
Používám phpMyAdmin 2.6.2-pl1 a při vytváření DB musím zvolit porovnávání. Když ho nezvolím, tak se automaticky zvolí latin1_swedish_ci - nevím kde mám nastavit defaultní porovnávání.

Když se snažím již vytvořené tabulky změnit na porovnávání cp1250_czech_cs, tak mi to hodí chybu a operace se neprovede.

Nevíte kde vše potřebné změnit a nastavit?

Děkuji, Berny
Berny
Profil
Nikoho nenapadá, jak změnit stávající tabulky do jiného porovnávání tak, aby vše fungovalo jak má?
Kajman_
Profil *
Aby vše správně fungovalo, tak je nutné, aby data odpovídala nastevenému kódování. Pokud jsou ve špatném, tak moc nevím, jak to jednoduše předělat... občas to dám na blob a pak zpátky do textu nebo varcharu v kódování, ve kterém opravdu data jsou.

Až se toho podaří vyřešit, tak ve stránkách po každém connectu nastavte korektně set names.
Berny
Profil
Kajman_

No s výstupen nemám problém. Tam se zobrazuje vše OK, ale problém je v PMA.
Formátoval jsem disk a data z MySQL jsem zálohoval jako fyzické soubory (což byla asi chyba - příště je exportuji).
Poté jsem nainstaloval novou verzi jak Apache, PHP, tak i MySQL a soubory s daty jsou zpět překopíroval. Po překopírování se porovnávání nastavilo automaticky na latin1_swedish_ci a já nevím jak ho změnit zpět. Pří pokusu změny porovnávání na cp1250_czech_cs to hodí chybu.
Berny
Profil
Tak defaultní nastavení znakové sady se mi podařilo nastavit na cp1250 pomocí nástroje Mysql Tools for 5.0.
Pak jsem si vytvořil DB s názvem zk a v ni tabulku tabulka. Tabulka obsahuje pouze sloupec id a textový sloupec neco.
Když do této tabulky vložím data bez diakritiky, tak vše proběhne v pořádku.

INSERT INTO tabulka (id, neco) VALUES (0, "dlouhy text bez diakritiky");
V opačném případě:

INSERT INTO tabulka (id, neco) VALUES (0, "ěščřžýáíé");
se mi za pomoci fce mysql_error() objeví chybová hláška:

Data too long for column 'neco' at row 1
nightfish
Profil
Berny
zavolal jsi někdy před tím insertem SET NAMES 'cp1250'?
Berny
Profil
nightfish
Právěže jsem to v dřívějších pokusech ve scriptech měl, ale problém mi to nevyřešilo a chybovou hlášku to házelo pořád. Když mi to problém nevyřešilo, tak jsem neměl důvod to tam nechávat.
Po přenastavení defaultní znakové sady a několikahodinovém hraní s porovnáváním jsem to, na tvůj podmět, do scriptů znovu přidal a můj problém to KONEČNĚ vyřešilo.

Vše funguje jak má.
Moc děkuju
Toto téma je uzamčeno. Odpověď nelze zaslat.