die guten alten umlaute

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Goudaman
User
Beiträge: 2
Registriert: Donnerstag 4. September 2003, 10:54

die guten alten umlaute

Beitragvon Goudaman » Donnerstag 4. September 2003, 11:16

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 5. September 2003, 08:44

Unicode strings benutzen??
bei mir gehts auch so problemlos.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast

Beitragvon Gast » Freitag 5. September 2003, 10:25

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Freitag 5. September 2003, 18:43

Frage: was ist a? warum steht ganz unten ein return 0? Und, kannst du bitte die [code]...[/code] Tags benutzen, weil bei so vielen try excepts verliert man sonst den Überblick...
rogen

hatte das gleiche

Beitragvon rogen » Freitag 5. September 2003, 20:38

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.
Gast

Beitragvon Gast » Freitag 5. September 2003, 20:39

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 



entschuldigung
Gast

Beitragvon Gast » Montag 8. September 2003, 12:25

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:

Code: Alles auswählen

def someFunc():
    a = u"German special CHARs: äüö ÄÜÖ ß"
    print a.encode('latin-1','ignore')
    return 0


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!
Gast

Beitragvon Gast » Montag 8. September 2003, 12:38

default encoding eben nicht auf englisch sondern auf deutsch natuerlich.
Goudaman
User
Beiträge: 2
Registriert: Donnerstag 4. September 2003, 10:54

Beitragvon Goudaman » Montag 8. September 2003, 16:19

ok habs nochmal anders probiert:

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


um zu sehen was default is etc..
im IDLE 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'


bei mir kommt raus:

defaultlocale: ('de_DE', 'cp1252')
\xfc encoded: ³ ─
latin-1: German special CHARs: ├ñ├╝├ ├ä├£├û ├ƒ
ascii: German special CHARs: ?????? ?????? ??
cp1252: German special CHARs: ├ñ├╝├ ├?├?├? ├?


obwohl alles auf deutsch und cp1252 steht...

ich checks nicht... :cry:

Wer ist online?

Mitglieder in diesem Forum: kbr, noisefloor