Autor | Zpráva | ||
---|---|---|---|
Berny Profil |
#1 · Zasláno: 22. 12. 2006, 20:53:56 · Upravil/a: Berny
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 |
||
Časová prodleva: 4 dny
|
|||
Berny Profil |
#2 · Zasláno: 26. 12. 2006, 10:01:02
Nikoho nenapadá, jak změnit stávající tabulky do jiného porovnávání tak, aby vše fungovalo jak má?
|
||
Kajman_ Profil * |
#3 · Zasláno: 26. 12. 2006, 10:55:14
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 |
#4 · Zasláno: 26. 12. 2006, 14:36:29
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 |
#5 · Zasláno: 26. 12. 2006, 15:37:53 · Upravil/a: Berny
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 |
#6 · Zasláno: 26. 12. 2006, 15:39:47
Berny
zavolal jsi někdy před tím insertem SET NAMES 'cp1250'? |
||
Berny Profil |
#7 · Zasláno: 26. 12. 2006, 15:51:21
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 |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0