Estoy trabajando en contra de una aplicación que parece interesada en devolver, lo que creo que es, cadenas dobles codificadas en UTF-8.Decodificación doble en unicode en python
Envío la cadena u'XüYß'
codificada usando UTF-8, convirtiéndose así en X\u00fcY\u00df
(igual a X\xc3\xbcY\xc3\x9f
).
El servidor debe simplemente repetir lo que la envié, sin embargo, devuelve lo siguiente: X\xc3\x83\xc2\xbcY\xc3\x83\xc2\x9f
(debe ser X\xc3\xbcY\xc3\x9f
). Si lo decodifico usando str.decode('utf-8')
se convierte en u'X\xc3\xbcY\xc3\x9f'
, que se ve como ... unicode-cadena, que contiene la cadena original codificada usando UTF-8.
pero Python no me permite descodificar una cadena Unicode sin volver a codificar en primer lugar - la cual falla por alguna razón, que se me escapa:
>>> ret = 'X\xc3\x83\xc2\xbcY\xc3\x83\xc2\x9f'.decode('utf-8')
>>> ret
u'X\xc3\xbcY\xc3\x9f'
>>> ret.decode('utf-8')
# Throws UnicodeEncodeError: 'ascii' codec can't encode ...
¿Cómo persuadir Python para volver a decodificar la cadena ? - y/o hay alguna forma (práctica) de depurar lo que está realmente en las cadenas, sin pasarlo a través de todas las conversiones implícitas print
?
(Y sí, me han informado de este comportamiento con los desarrolladores del lado del servidor.)
** Whew ** - no necesita usar mi cosa de miedo. –