Středa, 20. dubna 2005

SOAP a PHP (2)



Knihovna NuSOAP, o které jsem psal v sobotu (viz SOAP a PHP) dělá super věc – někde uvnitř všechno co je UTF-8 převede nejdříve na ISO-8859–1 a pak zase zpátky na UTF-8. Opravdu nevím proč to dělá, ale používá na to funkci utf8 encode() a utf8 encode().

Kontrolní otázka – co se asi stane s českým textem v UTF-8 převedeným do ISO-8859–1 a zpět do UTF-8?

Před:
ěščřžýáíé

Po:
?????ýáíé

Doplněno ve 22.00

Naštěstí jsem v komentářích našel poznámku:

// TODO: add an option to disable this for folks who want
// raw UTF-8 that, e.g., might not map to iso-8859–1

Na Sourceforge jsem si z CVS repository stáhnul o setinku novější verzi, ve které byla možnost vypnout tu výše uvedenou hloupost. Ufff. Časová ztráta asi 4 hodiny.

Doplěno ve 23.15

Čtyři hodiny jsou možná trošku moc, takže následuje vysvětlení → Pokud byly v textu použity české znaky s čárkou, tak se vše zdálo v pořádku, pak jsem si ale všiml, že místo znaků s háčkama se zobrazují otazníky. Měl jsem podezření na nastavení komunikace s MySQL, případě na nastavení MySQL samotné, dokonce jsem provedl downgrade z 4.1 na 4.0 (protože verze 4.1 používá nativně UTF-8 a správné nastavení kódování je celkem věda). Pak jsem měl podezření, že chyba je na straně odesílatele SOAP dat. Pomocí jejich testovací stránky jsem se ujistil, že problém je asi na straně mého SOAP klienta, tedy NuSOAP. Začal jsem si hrát s jinou SOAP knihovnou, tentokrát přímo z PEAR. Jednalo se o betaverzi a dokumentace se od kódu knihovny dost značně lišila, takže jsem tuto cestu raději vzdal. A jako poslední přišla na řadu kotrola kódu NuSOAP řádek po řádku (jak jsem psal v sobotu – 230kB, 6500 řádků) a výsledek se dostavil.

Prochaine | 21:37 | Nezařazené | Komentáře