menü

status

online seit 5386 tagen
letztes update am
28. November, 14:45

kalender

Oktober 2005
Mo
Di
Mi
Do
Fr
Sa
So
 
 
 
 
 
 1 
 2 
 4 
 6 
 9 
10
11
17
24
25
27
29
31
 
 
 
 
 
 
 

aktuelles

Ich lebe noch!
nighthawk - 28.11. 14:45
Nach langer Zeit ...
nighthawk - 04.10. 23:09
Lösungen vom draufgucken
nighthawk - 27.02. 22:30
Mal 'was neues
nighthawk - 26.01. 22:29
Ganz Münster auf dem Aasee
nighthawk - 11.01. 20:17

historisches

suche

 

buttonmania

xml version of this page

paRSS - Feews! for the rest of us

startseite > Freitag, 07.10.2005


Freitag, 7. Oktober 2005

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

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')

gefunden habe ich den entscheidenden hinweis zu diesem umstand uebrigens hier: vandervossen.net.
ältere beiträge