Prohlížení tohoto vlákna:
1 Anonymní uživatelé
Problém s kódováním v DB |
||
---|---|---|
Nováček
Členem od:
9:02 17.4.2008 Skupina:
Registrovaní uživatelé Příspěvky:
2
|
Pokud náhodou narazíte na to, že se vám přes veškerou snahu nebudou do databáze ukládat znaky které chcete, ale budou se nahrazovat jinými znaky, pak máte velmi pravděpodobně stejný problém, jako jsem měl já. Pokusím se vám ušetřit pár hodin času.
Můj problém vznikl po přesunu na nový server. Kódování v DB na původním serveru bylo nastaveno na Latin2 (ISO-8859-2) a web je rovněž celý v Latin2. Na původním stroji bylo vše v pořádku, na novém vznikl problém, protože v konfiguraci MySQL serveru je nastavena výchozí znaková sada na CP1250 (Windows-1250). Vytvořil jsem novou databázi s výchozím kódováním Latin2, provedl dump v latin2: $ mysqldump obchod -Q --default-character-set=latin2 > obchod.sql Dále jsem provedl na novém serveru import: $ mysql -D obchod --default-character-set=latin2 < obchod.sql Data v MySQL databázi byla korektní (např. v phpMyAdmin bylo všechno O.K.) Na webu bylo také všechno v pořádku až do okamžiku, než jsem se pokusil přidat nové zboží a v názvu se vyskytovaly znaky, které Latin2 zná, ale Windows-1250 ne. Najednou se místo správného znaku objevil otazník. Prohledal jsem tedy všechny skripty a naštěstí je celý ZenCart napsán velmi dobře a přehledně, takže stačilo serveru pro komunikaci s DB vnutit to správné kódování. Moje úprava je v souboru: /includes/classes/db/mysql/query_factory.php Za řádky: if ($this->link) { if (@mysql_select_db($zf_database, $this->link)) { $this->db_connected = true; stačí doplnit: // hack for latin2 mysql_query("SET NAMES `latin2`"); Pokud by to náhodu nefungovalo, tak se ještě dají doplnit i další parametry, které MySQL serveru upraví parametry připojení: mysql_query("SET CHARACTER SET latin2"); mysql_query("SET COLLATION_CONNECTION = `latin2_general_ci`"); Stejným způsobem se dá dosáhnout i toho, že databázi budete mít v UTF8 a web např. ve Windows-1250. Doufám, že jsem touto kapkou informace pomohl těm, kdo budou v budoucnu řešit stejný problém.
Zasláno: 9:21 17.4.2008
|
|
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Webmaster
Členem od:
22:00 29.8.2005 Bydliště Brno
Skupina:
Administrátoři Vývojáři Příspěvky:
2124
|
Zdravím, už se to tu řešilo, ale i tak díky.
Zasláno: 10:05 17.4.2008
|
|
_________________
Prodej zencart.cz Virtuální sídlo firmy v Brně Pronájem salónku v Brně, oslavy, pronájmy prostor v Brně ----- "Nikdo není dokonalý" .... radím Vám zálohujte |
||
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Nováček
Členem od:
9:02 17.4.2008 Skupina:
Registrovaní uživatelé Příspěvky:
2
|
Tak to mě mrzí, že jsem to psal zbytečně. Začal jsem tady a hledal a hledal a nenašel. Navíc jsem jenom administrátor serveru a o ZenCart vím, jenom to, že existuje. Celý ten obchod je v polštině, a já polsky neumím ani slovo, takže to byla obzvlášť zábavná práce.
Zasláno: 10:10 17.4.2008
|
|
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Webmaster
Členem od:
22:00 29.8.2005 Bydliště Brno
Skupina:
Administrátoři Vývojáři Příspěvky:
2124
|
Zbytečně určitě ne. Toto vlákno zase najdou jiní, kteří to původní nenašli.
Zasláno: 14:58 17.4.2008
|
|
_________________
Prodej zencart.cz Virtuální sídlo firmy v Brně Pronájem salónku v Brně, oslavy, pronájmy prostor v Brně ----- "Nikdo není dokonalý" .... radím Vám zálohujte |
||
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Nováček
Členem od:
18:59 5.6.2008 Skupina:
Registrovaní uživatelé Příspěvky:
2
|
Thanx za túto tému...pomohla mi...
Zasláno: 19:38 5.6.2008
|
|
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Začátečník
Členem od:
21:47 12.6.2007 Skupina:
Registrovaní uživatelé Příspěvky:
26
|
Také velice děkuji za pomoc. Mám katalog v windows-1250, db v utf-8 a porovnávání na latin1 swedish. Při přesunu na nový server pmohla jedině úprava
if ($this->link) { if (@mysql_select_db($zf_database, $this->link)) { $this->db_connected = true; mysql_query("SET CHARACTER SET latin1"); mysql_query("SET COLLATION_CONNECTION = `latin1_general_ci`"); return true; takže se týkala porovnávání. Díky a mějte se ;)
Zasláno: 4:33 10.12.2008
|
|
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Webmaster
Členem od:
22:00 29.8.2005 Bydliště Brno
Skupina:
Administrátoři Vývojáři Příspěvky:
2124
|
Mě pomohlo nastavit porovnání a kódování databáze tak, že jsem databázi vyexportoval, uložil do utf a tam kde je latin a různé porovnání swedish, tak jsem hromadně přepsal v pspadu na
CREATE TABLE .....CHARSET=utf8 COLLATE=utf8_bin, pak jsem to zase importoval včetně vytvoření tabulek zpět.
Zasláno: 19:41 10.12.2008
|
|
_________________
Prodej zencart.cz Virtuální sídlo firmy v Brně Pronájem salónku v Brně, oslavy, pronájmy prostor v Brně ----- "Nikdo není dokonalý" .... radím Vám zálohujte |
||
Přenos |
Re: Problém s kódováním v DB |
||
---|---|---|
Expert
Členem od:
12:45 22.7.2008 Bydliště Rožnov pod Radhoštěm
Skupina:
Registrovaní uživatelé Příspěvky:
85
|
Měl jsem problém s češtinou v DB, nové zadaávání a kompatibilitu jsem vyřešil pomocí předchozích rad, jenže největší problém byl s opravou databáze, jelikož shop už byl plný zboží. Chtěl bych poradit všem kdo to budou dělat, ať opravdy dělají ve winmerge, je tam možnost hromadné změny, tak že stačí zapnout porovnávání s jakýmkoliv jiným souborem, ale pracovat jen s vyexportovanou DB.
Dělal jsem to tak, že jsem si okopíroval neplatný znak, zvolil možnost nahradit, vybral jaké znaky měnit za jaké a dal nahradit vše. Uprava DB trvala necelých 20 minut a to jsem měnil Č,č, Ř, ř, ě, ň, ť, ů, a možná ještě něco. Snad tyhle rady někomu pomohou.
Zasláno: 14:59 24.4.2009
|
|
_________________
|
||
Přenos |
Můžete prohlížet témata.
Nemůžete zakládat nová témata.
Nemůžete odpovídat na příspěvky.
Nemůžete editovat Vaše příspěvky.
Nemůžete mazat Vaše příspěvky.
Nemůžete přidávat nové ankety.
Můžete hlasovat v anketách.
Nemůžete připojovat soubory k příspěvkům.
Nemůžete přispívat bez schválení.