Hallo alle:
Ich hab folgendes Problem bei einer Anwendung:
Die Umlaute werden in einem String durch die amerikanischen (also ü wird zu [etc.) getauscht.
Es wird also keine "exeption geraised" (i love anglizismen) aber die zeichen trotzdem nicht korrekt uebergeben.
Die Codierung hab ich in der site.py auf latin-1
Wenn ich per IDLE ein script aufrufe funktionierts tadel los.
Meine Scripte laufen allerdings als Service/ bzw zum debuggen in einem Terminal fenster.
Die maschine ist eine amerikanische mit deutschem betriebssystem (win)
Hat irgendjemand einen Vorschlag was ich versuchen Koennte?
Danke!
Chris
die guten alten umlaute
hehe...
wuerd ich ja gern.. aber die werden eben nicht richtig angezeigt.
aber ich bin dem problem auf der spur... es wurden bei der app nicht alle/ bzw wohl keine der encodings aus dem encodings ornder geladen... jetzt muss die app so umgebaut werden das sie eben das tut. nur steig ich nicht durch wann oder durch welches script diese encodings eben geladen werden.
Ich war zu ungenau, da sich das Problem an einer App zeigt in die Python integriert ist.
(das es im IDLE funktionierte lag daran das IDLE natuerlich die standard Python pfade benutzt... d'oh!)
also nun die abwandlung meiner Frage:
Was muss im Python lib dll wasimmer ordner sein damit die encodings moeglich sind...?
try:
import locale
print "locale imported"
except:
print "locale not imported"
try:
import codecs
try:
print a.encode('latin-1','ignore')
except:
print "encoding Latin not working"
try:
print a.encode('ascii','ignore')
except:
print "encoding Ascii not working"
try:
print a.encode('cp1252','ignore')
except:
print "encoding cp1252 not working"
except:
print "IMPORT not working"
return 0
die imports funktionieren aber eben nicht das a.encode
THX
wuerd ich ja gern.. aber die werden eben nicht richtig angezeigt.
aber ich bin dem problem auf der spur... es wurden bei der app nicht alle/ bzw wohl keine der encodings aus dem encodings ornder geladen... jetzt muss die app so umgebaut werden das sie eben das tut. nur steig ich nicht durch wann oder durch welches script diese encodings eben geladen werden.
Ich war zu ungenau, da sich das Problem an einer App zeigt in die Python integriert ist.
(das es im IDLE funktionierte lag daran das IDLE natuerlich die standard Python pfade benutzt... d'oh!)
also nun die abwandlung meiner Frage:
Was muss im Python lib dll wasimmer ordner sein damit die encodings moeglich sind...?
try:
import locale
print "locale imported"
except:
print "locale not imported"
try:
import codecs
try:
print a.encode('latin-1','ignore')
except:
print "encoding Latin not working"
try:
print a.encode('ascii','ignore')
except:
print "encoding Ascii not working"
try:
print a.encode('cp1252','ignore')
except:
print "encoding cp1252 not working"
except:
print "IMPORT not working"
return 0
die imports funktionieren aber eben nicht das a.encode
THX
def sonderzeichen(eing):
a = repr(eing)
a = a.replace("\\xe4","")
a = a.replace("\\xfc","")
a = a.replace("\\xf6","")
a = a[1:]
a = a.replace("\'","")
a = str(a)
return a
mit sonderzeichen(string)
kommt der umgew. string raus.
a = repr(eing)
a = a.replace("\\xe4","")
a = a.replace("\\xfc","")
a = a.replace("\\xf6","")
a = a[1:]
a = a.replace("\'","")
a = str(a)
return a
mit sonderzeichen(string)
kommt der umgew. string raus.
Code: Alles auswählen
def sonderzeichen(eing):
a = repr(eing)
a = a.replace("\\xe4","")
a = a.replace("\\xfc","")
a = a.replace("\\xf6","")
a = a[1:]
a = a.replace("\'","")
a = str(a)
return a
hi milan
hi rogen
danke fuer die antworten:
das a ist nur ein string beispiel, das Return 0 muss ich bei dieser App benutzen damit sie keinen weiteren Code ausfuehrt (die umlaute stehen in einem text string, der per Python ausgelesen und in eine db geschrieben wird) ich versuche mit dem kurzen try/except script eben nur zu debuggen.
ein anderes Beispiel:
sollte ja eigentlich auch:
German special CHARs: äüö ÄÜÖ ß
rauskommen (wie im IDLE) ... stattdessen kommt bei mir:
German special CHARs: ├ñ├╝├ ├ä├£├û ├ƒ
raus.
rogen:
dein script wuerde doch gleichbedeutend mit a.encode('latin-1','ignore') sein, oder?
das encode funktioniert mittlerweile, muss irgendwo ein import fehler gewesen sein...
Jedenfalls muss es irgendetwas mit der Systemsprache zu tun haben und das defaultdecoding eben auf englisch stehen. was ich aber nicht hinbekomme. wies scheint
thanks for sticking with me!
hi rogen
danke fuer die antworten:
das a ist nur ein string beispiel, das Return 0 muss ich bei dieser App benutzen damit sie keinen weiteren Code ausfuehrt (die umlaute stehen in einem text string, der per Python ausgelesen und in eine db geschrieben wird) ich versuche mit dem kurzen try/except script eben nur zu debuggen.
ein anderes Beispiel:
Code: Alles auswählen
def someFunc():
a = u"German special CHARs: äüö ÄÜÖ ß"
print a.encode('latin-1','ignore')
return 0
German special CHARs: äüö ÄÜÖ ß
rauskommen (wie im IDLE) ... stattdessen kommt bei mir:
German special CHARs: ├ñ├╝├ ├ä├£├û ├ƒ
raus.
rogen:
dein script wuerde doch gleichbedeutend mit a.encode('latin-1','ignore') sein, oder?
das encode funktioniert mittlerweile, muss irgendwo ein import fehler gewesen sein...
Jedenfalls muss es irgendetwas mit der Systemsprache zu tun haben und das defaultdecoding eben auf englisch stehen. was ich aber nicht hinbekomme. wies scheint
thanks for sticking with me!
ok habs nochmal anders probiert:
um zu sehen was default is etc..
im IDLE kommt raus:
ich checks nicht...
Code: Alles auswählen
def umlaut():
import locale
print "defaultlocale: " + str(locale.getdefaultlocale())
umlautStr = "\xfc \xc4"
print "\\xfc encoded: " + umlautStr
a = "German special CHARs: äüö ÄÜÖ ß"
a = unicode(a,'latin-1')
try:
print "latin-1: " + str(a.encode('latin-1','replace'))
except:
print "encoding Latin not working"
try:
print "ascii: " + (a.encode('ascii','replace'))
except:
print "encoding Ascii not working"
try:
print "cp1252: " + str(a.encode('cp1252','replace'))
except:
print "encoding cp1252 not working"
return a
im IDLE kommt raus:
bei mir kommt raus:defaultlocale: ('de_DE', 'cp1252')
\xfc encoded: ü Ä
latin-1: German special CHARs: äüö ÄÜÖ ß
ascii: German special CHARs: ??? ??? ?
cp1252: German special CHARs: äüö ÄÜÖ ß
u'German special CHARs: \xe4\xfc\xf6 \xc4\xdc\xd6 \xdf'
obwohl alles auf deutsch und cp1252 steht...defaultlocale: ('de_DE', 'cp1252')
\xfc encoded: ³ ─
latin-1: German special CHARs: ├ñ├╝├ ├ä├£├û ├ƒ
ascii: German special CHARs: ?????? ?????? ??
cp1252: German special CHARs: ├ñ├╝├ ├?├?├? ├?
ich checks nicht...