Dobrý den,
mám problém s nasazením Moodlu na IIS. Na localhostu mi běží Apache a celý kurz jsem si pěkně připravil, pomocí zálohy zabalil a nahrál na čistou instalaci Moodlu na svém webhostingu, který používá Win+IIS. Obnova ze zálohy znamenala docela šok, protože se mnoho věcí nepovedlo naimportovat (některé texty vypadají podobně, jako když ve WYSIWYG editoru přepnu na zobrazení zdrojového kódu), ale to by nebyl problém, copy-paste umím.
Problém je, že znak 'ž' vložený do HTMLArea (nebo jakýkoliv jiný vypečený český znak) se do databáze uloží jako '?'. HTTP komunikace vypadá tak, že prohlížeč odešle '%BE' (což je mi divné, protože tento kód je vyhrazen pro znak '3/4', ale to je fuk, na localhostu se správně uloží 'ž') a server odpoví 200 OK. Na localhostu pošle content-type latin 2 (což je nastavení Apache), ale na hostingu pošle win-1250. Nevím, jestli je problém tady. Pracovníci podpory mi napsali, že v tom problém není a že je ve skriptu potřeba zavolat
mysql_query("SET character_set_results=latin2", $pripojeni);
mysql_query("SET character_set_connection=latin2", $pripojeni);
mysql_query("SET character_set_client=latin2", $pripojeni);
V tom případě by asi byla chyba na straně Moodlu. Nemáte s podobným problémem nějaké zkušenosti?
Díky, Borek
Uvedené MySQL příkazy pro nastavení znakové sady nejsou dle mého názoru nezbytné (znaková sada ovlivňuje věci jako třídění apod., nikoliv ukládání dat). Uvádíte, že se vám znak "ž" ukládá do db jako "?". Jak jste na to přišel? Jedná se o db na serveru vašeho providera nebo na localhostu?
Vyzkoušejte rovněž jiný prohlížeč. Mám pocit, že jejich chování je různé podle toho, zda upřednostňují informace posílané v HTTP hlavičcce nebo v HTML záhlaví. Zobrazuje se vám zbytek stránek se správnou češtinou?
Vyzkoušejte rovněž jiný prohlížeč. Mám pocit, že jejich chování je různé podle toho, zda upřednostňují informace posílané v HTTP hlavičcce nebo v HTML záhlaví. Zobrazuje se vám zbytek stránek se správnou češtinou?
Ano, 'ž' a některé další české znaky (ne všechny) se mi skutečně ukládají jako '?'. Přišel jsem na to tak, že jsem uložil znak 'ž' a při zobrazení stránky na mě koukal znak '?'. Kontrolu jsem provedl přes MyAdmin. Jedná se o db na hostingu, na localhostu je vše v pohodě (podle podpory hostingu proto, že na lokálu mám jako výchozí collation latin2 a problém vniká pouze tehdy, když se aktuální používané kódování liší od výchozího - to je případ hostingu).
Prohlížeče jsem zkoušel oba reprezentativní - IE jako toho, kdo se chová logicky a preferuje informaci v meta tagu, a Firefox jako toho, kdo se chová nelogicky, ale podle standardů (a tudíž preferuje HTTP hlavičku).
Poněkud detailněji jsme to s Petrem Škodou řešili zde, nejjednodušším (ale asi i nejhorším) řešením je prostě tabulky vrátit do defaultního kódování.
Prohlížeče jsem zkoušel oba reprezentativní - IE jako toho, kdo se chová logicky a preferuje informaci v meta tagu, a Firefox jako toho, kdo se chová nelogicky, ale podle standardů (a tudíž preferuje HTTP hlavičku).
Poněkud detailněji jsme to s Petrem Škodou řešili zde, nejjednodušším (ale asi i nejhorším) řešením je prostě tabulky vrátit do defaultního kódování.
Pakliže mají ajťáci od vašeho hostitele pravdu, zkusil bych
ALTER DATABASEdb_name
[[DEFAULT] CHARACTER SETcharset_name
]
[[DEFAULT] COLLATEcollation_name
]
To zní jako velmi konstruktivní návrh. Já už jsem ale tak rád, že se mi na web podařily přenést chystané materiály, že už se chci jakýmkoliv experimentům vyhnout. Přesto díky.
Samozřejmě - když experimentujete, tak opatrně Udělejte si předtím zálohu (dump) celé databáze. V případě problémů se prostě vrátíte do stavu před vykonáním těchto dotazů.
Moje dosavadní instalace jsem provozoval na MySQL 4.0, který collation ještě nepodporuje (nebo o tom nevím). Znakové sady serveru jsem měl nastavené různě (latin1, latin2) a nenarazil jsem na problémy. A popravdě jsem si vždycky myslel, že MySQL se na ukládaná data dívá opravdu jako na byty, takže nějaká znaková sada je podružná a ovlivňuje maximálně třídění apod.
Moje dosavadní instalace jsem provozoval na MySQL 4.0, který collation ještě nepodporuje (nebo o tom nevím). Znakové sady serveru jsem měl nastavené různě (latin1, latin2) a nenarazil jsem na problémy. A popravdě jsem si vždycky myslel, že MySQL se na ukládaná data dívá opravdu jako na byty, takže nějaká znaková sada je podružná a ovlivňuje maximálně třídění apod.