Encoding Problem

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.
Antworten
peterpan
User
Beiträge: 3
Registriert: Sonntag 24. August 2008, 13:40

Hi,

in einem Script möchte ich eine Usereingabe haben die Teil einer URL wird. Jetzt habe ich Probleme mit Sonderzeichen.

z.B. müsste "á" zu "%C3%A1" werden.

"%C3%A1" ist urlencoded und ist eigentlich "\xc3\xa1" und unicode('\xc3\xa1', 'utf-8') gibt mir auch "á" zurück. Aber wie geht es anders herum? Wie komme ich von "á" zu "\xc3\xa1"? :)
BlackJack

Schau Dir mal `urllib.quote()` an.
peterpan
User
Beiträge: 3
Registriert: Sonntag 24. August 2008, 13:40

Bekomme es nicht hin.

urllib.quote('á') gibt mir "%A0" zurück. Ist das ein erster Schritt in Richtung "\xc3\xa1" bzw. "%C3%A1" oder ganz die falsche Richtung? :)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Code: Alles auswählen

In [6]: urllib.quote(u"á".encode("utf-8"))
Out[6]: '%C3%A1'
=DDD
peterpan
User
Beiträge: 3
Registriert: Sonntag 24. August 2008, 13:40

danke vielmals :)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Oder etwas ausführlicher bei mir unter Windows:

Code: Alles auswählen

>>> urllib.quote('á'.decode('cp1252').encode('utf-8'))
'%C3%A1'
>>> urllib.quote('á'.decode('utf-8').encode('utf-8'))

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in -toplevel-
    urllib.quote('á'.decode('utf-8').encode('utf-8'))
  File "C:\Programme\Python24\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in position 0: unexpected end of data
Bei Dir ist also 'á' in einem anderen Encoding als 'utf-8' gespeichert.
MfG
HWK
Antworten