Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: LaThortilla (Effort) en 7 Abril 2015, 04:11 am



Título: [PYTHON][AYUDA] Problema con acentos y ñ
Publicado por: LaThortilla (Effort) en 7 Abril 2015, 04:11 am
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
  1. {
  2.  "city": "Mexico",
  3.  "region": "Distrito Federal",
  4.  "country": "MX",
  5.  "loc": "386",
  6.  "org": "8 visión C.V.",
  7.  "postal": "14620"
  8. }
AGREGADO


El error aparece en la linia 4
Código
  1. def printtr(info, oufile):
  2.     log = '<tr><td class="info">'+json+'</td><tr>'
  3.     print(log)
  4.     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
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
2. decodificar la cadena a utf-8 pero no funcionan-...
Código
  1. log = log.decode('utf-8')
3.- remplazar caracteres invalidos ('Solucion temporal')
Código
  1.  
  2.    #!/usr/bin/env python
  3.    # -*- coding: utf-8 -*-
  4.     json = json.replace('á','a')
  5.     json =  json.replace('é','e')
  6.     json =  json.replace('í','i')
  7.     json =  json.replace('ó','o')
  8.     json = json.replace('ú','u')
  9.     json = json.replace('Á','A')
  10.     #ETC. ETC.


Título: Re: [AYUDA] unicodeencodeerror ascii codec can't encode character u\xf3
Publicado por: MCKSys Argentina en 7 Abril 2015, 04:26 am
Si quieres convertir ese valor a Unicode, puedes probar con unichr (https://docs.python.org/2/library/functions.html#unichr)

Saludos!


Título: Re: [AYUDA] unicodeencodeerror ascii codec can't encode character u\xf3
Publicado por: 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 (https://docs.python.org/2/howto/unicode.html)

Saludos


Título: Re: [AYUDA] unicodeencodeerror ascii codec can't encode character u\xf3
Publicado por: LaThortilla (Effort) en 7 Abril 2015, 20:20 pm
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 (https://docs.python.org/2/howto/unicode.html)

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

Si quieres convertir ese valor a Unicode, puedes probar con unichr (https://docs.python.org/2/library/functions.html#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


Título: Re: [PYTHON][AYUDA] Problema con acentos y ñ
Publicado por: ViejoMajara en 11 Abril 2015, 10:13 am
¡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.

Citar
Pruebas 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


Título: Re: [PYTHON][AYUDA] Problema con acentos y ñ
Publicado por: Eleкtro en 11 Abril 2015, 10:49 am
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
  1. # -*- coding: Windows-1252 -*-
  2.  
  3. import sys
  4. print sys.stdout.encoding
  5.  
  6. print u"áéíóú àèìòù Ñ"

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

Saludos