Problém s kódováním vkládaného textu

Problém s kódováním vkládaného textu

autor Borek Bernard -
Počet odpovědí: 5
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

Počet hodnocení: -
V odpovědi na Borek Bernard

Re: Problém s kódováním vkládaného textu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
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?
V odpovědi na David Mudrák

Re: Problém s kódováním vkládaného textu

autor Borek Bernard -
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í.
V odpovědi na Borek Bernard

Re: Problém s kódováním vkládaného textu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Pakliže mají ajťáci od vašeho hostitele pravdu, zkusil bych
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]

V odpovědi na David Mudrák

Re: Problém s kódováním vkládaného textu

autor Borek Bernard -
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.
V odpovědi na Borek Bernard

Re: Problém s kódováním vkládaného textu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Samozřejmě - když experimentujete, tak opatrně mrknout 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. zamyšlený