TclHTTPd liefert immer ISO-8859-1 aus
ich habe gestern und vorgestern in muehevoller klein-debug-arbeit herausgefunden, dass die von tclhttpd ausgelieferten seiten immer iso-8859-1 sind - selbst dann, wenn ich in der httpd.tcl
ansich ist das alles auch nicht weiter schlimm.. nur leider hat das meinen xml-rpc server irgendwie durcheinander gebracht, denn das ausgelieferte xml dokument beginnt mit <?xml version='1.0'?> - es ist also kein encoding angegeben. xml-rpc implementationen in anderen sprachen gehen dann korrekterweise davon aus, daß das empfangene dokument das xml-default-encoding utf-8 benutzt... und sobald das erste sonderzeichen kommt, knallts.
um tcldom davon zu ueberzeugen, bei benutzung des default encodings dieses doch auch bitte im xml header anzugeben, musste ich schlussendlich einen kleinen patch vornehmen: tcldom-3-iso-8859-1 (patch, 0 KB) . danach steht nun korrekterweise am anfang <?xml version='1.0' encoding='iso-8859-1'?> und mein stueck python code meckert beim empfang eines deutschen umlauts auch nicht mehr. das ist zwar nicht der koenigsweg, denn nun steht das da ja immer, aber meines erachtens nach ist das so noch besser, als im regelfalle ein dokument mit dem falschen encoding auszuliefern.
waehrend meiner langen recherchen ist mir zudem aufgefallen, dass nicht nur tcl encodingprobleme hat, sondern auch python nicht viel besser ist.. empfaengt man mit der xmlrpclib einen string, der einen umlaut enthaelt, muss man, bevor man mit diesem arbeiten kann, python dessen encoding nochmals mitteilen.. das relevante stueck habe ich mal kursiv gemacht.
encoding system utf-8
schreibe.ansich ist das alles auch nicht weiter schlimm.. nur leider hat das meinen xml-rpc server irgendwie durcheinander gebracht, denn das ausgelieferte xml dokument beginnt mit <?xml version='1.0'?> - es ist also kein encoding angegeben. xml-rpc implementationen in anderen sprachen gehen dann korrekterweise davon aus, daß das empfangene dokument das xml-default-encoding utf-8 benutzt... und sobald das erste sonderzeichen kommt, knallts.
um tcldom davon zu ueberzeugen, bei benutzung des default encodings dieses doch auch bitte im xml header anzugeben, musste ich schlussendlich einen kleinen patch vornehmen: tcldom-3-iso-8859-1 (patch, 0 KB) . danach steht nun korrekterweise am anfang <?xml version='1.0' encoding='iso-8859-1'?> und mein stueck python code meckert beim empfang eines deutschen umlauts auch nicht mehr. das ist zwar nicht der koenigsweg, denn nun steht das da ja immer, aber meines erachtens nach ist das so noch besser, als im regelfalle ein dokument mit dem falschen encoding auszuliefern.
waehrend meiner langen recherchen ist mir zudem aufgefallen, dass nicht nur tcl encodingprobleme hat, sondern auch python nicht viel besser ist.. empfaengt man mit der xmlrpclib einen string, der einen umlaut enthaelt, muss man, bevor man mit diesem arbeiten kann, python dessen encoding nochmals mitteilen.. das relevante stueck habe ich mal kursiv gemacht.
server=xmlrpclib.ServerProxy(uri='http://xmlrpc.server./uri', encoding='iso-8859-1')
response=server.methode(10)
for k in response.keys():
for i in response[k].keys():
print k+'/'+i+'='+response[k][i].encode('iso8859-1')
geschrieben am 7. Oktober, 13:30 in geeky · 613x gelesen
keine kommentare · kommentieren