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"?
Encoding Problem
Code: Alles auswählen
In [6]: urllib.quote(u"á".encode("utf-8"))
Out[6]: '%C3%A1'
Oder etwas ausführlicher bei mir unter Windows:
Bei Dir ist also 'á' in einem anderen Encoding als 'utf-8' gespeichert.
MfG
HWK
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
MfG
HWK