
Hallo, ich habe eine kleines Problem: Ich schreibe gerade ein CGI-Script für Swish-E, nur leider habe ich ein kleine Problem damit, wenn ich das Suchformular mit äöü usw. Fülle, dann passiert das hier: ['# SWISH format: 2.4.3\n', '# Search words: halloa \xe4 \xf6 \xfc \xdf duda\n', '# Removed stopwords: \n', 'err: no results\n', '.\n'] ( Das ist die Ausgabe von print os.popen().readlines() ) Wie kann ich dafür sorgen das os.popen() an Swish-E die Umlaute weiterreicht? mfg Betz Stefan -- Betz Stefan -- Webdesign, Linux & Computerservice URL : http://www.stefan-betz.net Mail: info@stefan-betz.net _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Friday 10 February 2006 11:34, Stefan J. Betz wrote:
Hallo,
ich habe eine kleines Problem:
Ich schreibe gerade ein CGI-Script für Swish-E, nur leider habe ich ein kleine Problem damit, wenn ich das Suchformular mit äöü usw. Fülle, dann passiert das hier: ['# SWISH format: 2.4.3\n', '# Search words: halloa \xe4 \xf6 \xfc \xdf duda\n', '# Removed stopwords: \n', 'err: no results\n', '.\n']
( Das ist die Ausgabe von print os.popen().readlines() )
Wie kann ich dafür sorgen das os.popen() an Swish-E die Umlaute weiterreicht?
Tut es doch. Ist halt hexcode in der repräsentation als bytestring - wie gibst du das denn aus? Python 2.4.2 (#2, Sep 30 2005, 21:19:01) [GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Welcome to rlcompleter2 0.96 for nice experiences hit <tab> multiple times
'äöü' '\xc3\xa4\xc3\xb6\xc3\xbc' print 'äöü' äöü
BTW, das da oben ist UTF-8-encodiert, deines nehme ich mal an latin1. MfG Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Stefan, On Friday 10 February 2006 11:34, Stefan J. Betz wrote:
Hallo,
ich habe eine kleines Problem:
Ich schreibe gerade ein CGI-Script für Swish-E, nur leider habe ich ein kleine Problem damit, wenn ich das Suchformular mit äöü usw. Fülle, dann passiert das hier: ['# SWISH format: 2.4.3\n', '# Search words: halloa \xe4 \xf6 \xfc \xdf duda\n', '# Removed stopwords: \n', 'err: no results\n', '.\n']
Wahrscheinlich bekommst du die Daten utf-8 codiert (ja, manche browser machen das). Swish-e kann mit unicode so gar nichts anfangen. Kodier die Daten erst in 'latin-1', bevor du sie swish-e uebergibst. Komplet ungetested :-) koennte folgendes eventuell funktionieren suchunicode = unicode(suchbegriff,'utf8') suchlatin1 = suchunicode.encode('latin-1')
( Das ist die Ausgabe von print os.popen().readlines() )
Wie kann ich dafür sorgen das os.popen() an Swish-E die Umlaute weiterreicht?
mfg Betz Stefan
Viel Spass beim unicoden Stephan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Wahrscheinlich bekommst du die Daten utf-8 codiert (ja, manche browser machen das).
Nein, UTF-8 ist das was er bekommt nicht, s.u.
Swish-e kann mit unicode so gar nichts anfangen.
UTF-8 ist _nicht_ unicode. UTF-8 ist ein encoding genauso wie latin1 - nur das es durch entsprechende escape-sequenzen _alle_ unicode-zeichen codieren kann. Ich betone das hier so, weil eine Menge Leute das durcheinanderwerfen und dann Probleme entstehen. Auch wenn ich unten sehe das du das verstanden hast - genug andere Leute leider nicht.
Kodier die Daten erst in 'latin-1', bevor du sie swish-e uebergibst. Komplet ungetested :-) koennte folgendes eventuell funktionieren
suchunicode = unicode(suchbegriff,'utf8') suchlatin1 = suchunicode.encode('latin-1')
Das wäre richtig, wenn es denn UTF-8 wäre :) Aber
u'äöü'.encode("latin1") '\xe4\xf6\xfc'
zeigt, das die Bytewerte die er bekommt latin1 sind. Er macht sich IMO unnötig Sorgen, alles was passiert ist das er seine strings eben als repr(s) ausgibt und nicht mittels print. Dann bekommen die ihre hex-darstellung statt als bytes ans terminal geschickt zu werden, was dann die entsprechenden Zeichen draus macht. MfG Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Friday 10 February 2006 12:02, Diez B. Roggisch wrote:
Wahrscheinlich bekommst du die Daten utf-8 codiert (ja, manche browser machen das).
Nein, UTF-8 ist das was er bekommt nicht, s.u.
Swish-e kann mit unicode so gar nichts anfangen.
UTF-8 ist _nicht_ unicode. UTF-8 ist ein encoding genauso wie latin1 - nur das es durch entsprechende escape-sequenzen _alle_ unicode-zeichen codieren kann. Ich betone das hier so, weil eine Menge Leute das durcheinanderwerfen und dann Probleme entstehen.
Auch wenn ich unten sehe das du das verstanden hast - genug andere Leute leider nicht.
Sorry, du hast vollkommen recht. Das hab ich sehr, sehr unsauber formuliert. (Und ich gebe zu, dass ich auch lange Zeit utf8 (als codierung) und unicode durcheinandergeworfen habe).
Kodier die Daten erst in 'latin-1', bevor du sie swish-e uebergibst. Komplet ungetested :-) koennte folgendes eventuell funktionieren
suchunicode = unicode(suchbegriff,'utf8') suchlatin1 = suchunicode.encode('latin-1')
Das wäre richtig, wenn es denn UTF-8 wäre :) Aber
u'äöü'.encode("latin1")
'\xe4\xf6\xfc'
stimmt. manchmal hilft es erst nachzudenken und dann zu schreiben :-)
zeigt, das die Bytewerte die er bekommt latin1 sind. Er macht sich IMO unnötig Sorgen, alles was passiert ist das er seine strings eben als repr(s) ausgibt und nicht mittels print. Dann bekommen die ihre hex-darstellung statt als bytes ans terminal geschickt zu werden, was dann die entsprechenden Zeichen draus macht.
Wahrscheinlich hatte ich die Frage falsch interpretiert: Ich dachte, dass Stefan keine Treffer hat (obwohl welche da sein sollten), wenn der Suchbegriff Umlaute enthaelt. Aber ich gebe zu, dass das da nicht so steht. Vielleicht kann Stefan ja seine Frage mal praezisieren. Stephan
MfG Diez
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Am Fri, Feb 10, 2006 um 12:13:20 CET, Stephan Diehl schrieb:
zeigt, das die Bytewerte die er bekommt latin1 sind. Er macht sich IMO unnötig Sorgen, alles was passiert ist das er seine strings eben als repr(s) ausgibt und nicht mittels print. Dann bekommen die ihre hex-darstellung statt als bytes ans terminal geschickt zu werden, was dann die entsprechenden Zeichen draus macht.
Wahrscheinlich hatte ich die Frage falsch interpretiert: Ich dachte, dass Stefan keine Treffer hat (obwohl welche da sein sollten), wenn der Suchbegriff Umlaute enthaelt. Aber ich gebe zu, dass das da nicht so steht. Vielleicht kann Stefan ja seine Frage mal praezisieren.
Ok, ich habe schon mal den 1. Fehler selbstgefunden: In den Dateien die ich von Swish-E Indexiert habe war kein äöüß drin :-( os.popen() hat vollkommen richtig funktioniert, mein Fehler... Deswegen hat vielleicht auch google nix zu meinem Problem gefunden... Den 2. Fehler den ich hatte (ich war so bessen den Fehler bei Python oder sonstwo zu suchen, da hab ich glatt alles andere Vergessen) ist z.B. so reproduzierbar: import os print os.popen("/bin/bash äöü").readlines() Dann bekommt halt wieder diese komischen Escapes (\xfc usw..) Da ich diese Ausgabeform ja nur verwendet habe um zu test ob mein Script funktioniert hatte ich nicht bemerkt das print das (mehr oder weniger) falsch macht... print os.popen("/bin/bash äöü").readlines()[0] funktioniert z.B. einwandfrei, und damit ist ein Problem auch schon gelöst (welches eigentlich gar keines war) da ich die Daten ja eh noch parsen und auswerten muss. mfg Betz Stefan & Danke für die Hilfe -- Betz Stefan -- Webdesign, Linux & Computerservice URL : http://www.stefan-betz.net Mail: info@stefan-betz.net _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Diez B. Roggisch
-
Stefan J. Betz
-
Stephan Diehl