[PYTHON][AYUDA] Problema con acentos y ñ

Iniciado por LaThortilla (Effort), 7 Abril 2015, 04:11 AM

0 Miembros y 1 Visitante están viendo este tema.

LaThortilla (Effort)

ayuda con este error.... unicodeencodeerror ascii codec can't encode character u\xf3
tiene la solución a este problema...


Explico un poco:
estoy haciendo una peticion desde python y obtengo como resultado un json:

Código (actionscript) [Seleccionar]
{
 "city": "Mexico",
 "region": "Distrito Federal",
 "country": "MX",
 "loc": "386",
 "org": "8 visión C.V.",
 "postal": "14620"
}

AGREGADO


El error aparece en la linia 4
Código (python) [Seleccionar]
def printtr(info, oufile):
    log = '<tr><td class="info">'+json+'</td><tr>'
    print(log)
    oufile.write(log)


leyendo un poco encontre que es con las ñ y acentos proponen soluciones como esta:

SOLUCIONES QUE HE PROBADO:
1- encabezado pero no funcionan-...
Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

2. decodificar la cadena a utf-8 pero no funcionan-...
Código (python) [Seleccionar]
log = log.decode('utf-8')
3.- remplazar caracteres invalidos ('Solucion temporal')
Código (python) [Seleccionar]
   
   #!/usr/bin/env python
   # -*- coding: utf-8 -*-
    json = json.replace('á','a')
    json =  json.replace('é','e')
    json =  json.replace('í','i')
    json =  json.replace('ó','o')
    json = json.replace('ú','u')
    json = json.replace('Á','A')
    #ETC. ETC.

MCKSys Argentina

Si quieres convertir ese valor a Unicode, puedes probar con unichr

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Eleкtro

La próxima vez, cómo mínimo especifica el lenguaje al que te refieras, aquí no hay magos, trata de formular preguntas que todos sean capaces de entender ...saldrás ganando.

Evita utilizar tags del tipo "[AYUDA]" en el título del mensaje, los tags están para especificar el lenguaje o un resumen del propósito.

· Unicode HOWTO

Saludos








LaThortilla (Effort)

Cita de: Eleкtro en  7 Abril 2015, 05:39 AM
La próxima vez, cómo mínimo especifica el lenguaje al que te refieras, aquí no hay magos, trata de formular preguntas que todos sean capaces de entender ...saldrás ganando.

Evita utilizar tags del tipo "[AYUDA]" en el título del mensaje, los tags están para especificar el lenguaje o un resumen del propósito.

· Unicode HOWTO

Saludos
si lo siento elekro se me olvido especificarlo....

Cita de: MCKSys Argentina en  7 Abril 2015, 04:26 AM
Si quieres convertir ese valor a Unicode, puedes probar con unichr

Saludos!

gracias lo intentare... el problema que este error me sucede por que estoy haciendo peticiones a un webservice y no se si aparezcan mas de estos caracteres raros... seria una solución temporal ya que solo se que hay un caracter u\xf3

ViejoMajara

#4
¡Hola!

Estoy estudiando Python y, cuando me encuentro con alguna cosa especial, voy tomando notas. Con relación a la ñ y los acentos escribí esto, que a lo mejor te puede ayudar.

CitarPruebas realizadas con print 'niño llorón' en DOS, Wing IDE e IDE de Python.
Recomiendan poner la primera línea y una cualquiera de las siguientes:
#!/usr/bin/env python
# -*- coding: Windows-1252 -*-
# -*- coding: cp1252 -*-
# -*- coding: utf-8 -*-
# -*- coding: IBM850 -*-

Pero tras muchas comprobaciones veo que poniendo sólo la última línea me sirve tanto para DOS como para el Wing IDE, pero me sale mal en el IDE de Python.  Si pongo sólo la segunda o la tercera línea funciona en el IDE de Python pero no en los otros dos. La primera línea sobra en todos los casos y la cuarta no me ha servido en ningún caso.

De todas formas, sigo leyendo e investigando todo lo que se vaya diciendo sobre este asunto.

Saludos

Eleкtro

#5
Citar# -*- coding: Windows-1252 -*-
# -*- coding: cp1252 -*-

Si pongo sólo la segunda o la tercera línea funciona en el IDE de Python pero no en los otros dos.

1. Ambas "lineas" o codificaciones son la misma, el código de página o Codepage 1252 hace referencia al la misma codificación del alfabeto latino al que hace referencia Windows-1252, ya que son solo dos formas de referirse a lo mismo.

2. La codificación interna de la consola tiene un papel muy importante, para que puedas visualizar correctamente los caracteres latinos primero debes estar usando el código de página o codepage 850 (que es lo mismo que decir cp850 o IBM 850), guardar el archivo de tu script en codificación ANSI (windows-1252), declarar la codificación mostrar el string unicode y listo:

Código (python) [Seleccionar]
# -*- coding: Windows-1252 -*-

import sys
print sys.stdout.encoding

print u"áéíóú àèìòù Ñ"


PD: el codepage de la CMD lo puedes modificar con el comando CHCP.

Saludos