[Python-es] Problemas de encoding json utf-8

Diego Uribe Gamez diego.uribe.gamez en gmail.com
Mie Mar 20 23:44:48 CET 2013


ok, regresando yo al tema, ese es el problema que
tengo,pero también encontré un error de programación en un programa externo
al que consulto.

por otro lado me quedan resueltas las dudas con el vídeo.

creo que si hay anidados tipos de encoding lo  mejor es repararlos o
quejarse con el programador de eso, porque te tocaría  codificar la cadena
de texto en bits y eso es jodido, ademas de que si no sabes el encoding no
hay forma de saber cual el, puede aproximarte y trabajar pero nunca saber
cual es.

Mira el vídeo.

Saludos


El 20 de marzo de 2013 17:41, Andrey Antukh <niwi en niwi.be> escribió:

> Si crees que no he entendido la pregunta, por que vuelves a repetir lo
> mismo?
> Y partiendo del hecho de que no he entendido la pregunta, creo que sigo
> sin entender cual es tu duda.
>
> Andrey
>
>
> El 20 de marzo de 2013 23:36, Flavio Danesse <fdanesse en gmail.com>escribió:
>
> No entendiste la pregunta.
>>
>> Era:
>>
>> que pasa si en tu aplicación tienes un diccionario bien grande con
>> diccionarios, listas, etc . . . anidados
>> quieres guardarlo todo y de una en un json?
>>
>>
>> El 20 de marzo de 2013 17:31, Andrey Antukh <niwi en niwi.be> escribió:
>>
>> Es muy simple:
>>>
>>> >>> import io
>>> >>> import json
>>> >>> kk = {str(x):u"kákà" for x in range(1000)}
>>> >>> with io.open("foo.json", "wb") as f:
>>> ...     json.dump(kk, f)
>>> ...
>>> >>>
>>> >>> with io.open("foo.json", "rb") as f:
>>> ...     kk2 = json.load(f)
>>> ...
>>> >>> len(kk2.keys())
>>> 1000
>>> >>> kk2[1]
>>> Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
>>> KeyError: 1
>>> >>> print kk2["1"]
>>> kákà
>>>
>>> Andrey
>>>
>>>
>>> El 20 de marzo de 2013 20:52, Flavio Danesse <fdanesse en gmail.com>escribió:
>>>
>>> ok
>>>>
>>>> Esto funciona para guardar una cadena con tildes, pero que pasa si en
>>>> tu aplicación tienes un diccionario bien grande con diccionarios, listas,
>>>> etc . . . anidados y quieres guardarlo todo y de una en un json?
>>>>
>>>>
>>>>
>>>> El 20 de marzo de 2013 16:40, Andrey Antukh <niwi en niwi.be> escribió:
>>>>
>>>> Modulo json fue incorporado en python 2.6 tomando como codigo base
>>>>> simplejson.
>>>>> La regla principal, es usar siempre siempre y siempre, unicode (sea
>>>>> con UTF-8, UTF-16 o UTF-32) (para nuestro caso es utf-8).
>>>>> Y no habra problemas. Si no cuidas el encoding con el que editas los
>>>>> ficheros, pueden pasarte esas cosas.
>>>>>
>>>>> Usar un modulo externo y decir que es una solucion al problema, lo
>>>>> unico que dice es que el problema sigue ahi, y que el modulo que usas traga
>>>>> mas mierda y sea menos estricto, pero de ninguna manera te ha solucionado
>>>>> el problema de encoding.
>>>>>
>>>>> >>> import json
>>>>> >>> kk = u"cadená con tìldes"
>>>>> >>> dd = json.dumps({"foo": kk})
>>>>> >>> dd
>>>>> '{"foo": "caden\\u00e1 con t\\u00ecldes"}'
>>>>> >>> print json.loads(dd)
>>>>> {u'foo': u'caden\xe1 con t\xecldes'}
>>>>> >>> print json.loads(dd)['foo']
>>>>> cadená con tìldes
>>>>>
>>>>> Un saludo.
>>>>> Andrey
>>>>>
>>>>>
>>>>> El 20 de marzo de 2013 20:29, Flavio Danesse <fdanesse en gmail.com>escribió:
>>>>>
>>>>> yo tuve el mismo problema que él y esta fue la solución.
>>>>>>
>>>>>> La verdad no sabia que json era de python y simplejson no.
>>>>>>
>>>>>> El 20 de marzo de 2013 16:20, Andrey Antukh <niwi en niwi.be> escribió:
>>>>>>
>>>>>> El 20 de marzo de 2013 19:53, Flavio Danesse <fdanesse en gmail.com>escribió:
>>>>>>>
>>>>>>>> import simplejson
>>>>>>>> archivo = open(path, 'w')
>>>>>>>> archivo.write(simplejson.dumps(salida))
>>>>>>>> archivo.close()
>>>>>>>>
>>>>>>>>
>>>>>>> No entiendo la necesidad de liar a una persona con bibliotecas
>>>>>>> que están fuera de python, cuando la pregunta va directa sobre un modulo de
>>>>>>> python.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> El 20 de marzo de 2013 15:35, Diego Uribe Gamez <
>>>>>>>> diego.uribe.gamez en gmail.com> escribió:
>>>>>>>>
>>>>>>>> estoy usando nano,
>>>>>>>>>
>>>>>>>>> para lo que me pregunto quique:
>>>>>>>>>
>>>>>>>>> print u"%s" % var
>>>>>>>>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xf3 in
>>>>>>>>> position 53: ordinal not in range(128)
>>>>>>>>>
>>>>>>>>> lo que sucede es que var biene de otro archivo y es un string, no
>>>>>>>>> logro codificarlo.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> El 20 de marzo de 2013 13:33, Alberto Chamorro <
>>>>>>>>> a.chamorro.ruiz en gmail.com> escribió:
>>>>>>>>>
>>>>>>>>> Aun asi da cosa ver ASCII Java program text! ¿Que editor utilizas?
>>>>>>>>>>  On Mar 20, 2013 7:12 PM, "Quique Porta" <quiqueporta en gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> ¿Has probado esto?
>>>>>>>>>>> var = *u*"texto con tildes, Categorías "
>>>>>>>>>>>
>>>>>>>>>>> poniendo la "u" delante de la cadena
>>>>>>>>>>>
>>>>>>>>>>> El 20 de marzo de 2013 18:56, Diego Uribe Gamez <
>>>>>>>>>>> diego.uribe.gamez en gmail.com> escribió:
>>>>>>>>>>>
>>>>>>>>>>>> tan raro yo no sabia y tampoco entiendo:
>>>>>>>>>>>>
>>>>>>>>>>>> file texto.py
>>>>>>>>>>>> texto.py: ASCII Java program text
>>>>>>>>>>>>
>>>>>>>>>>>> sobre el encabezado esta el # -*- coding: utf-8 -*-
>>>>>>>>>>>> correctamente
>>>>>>>>>>>>
>>>>>>>>>>>> Como hago para saber con un print el tipo de codificación antes
>>>>>>>>>>>> de hacer el encode('utf-8')?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> El 20 de marzo de 2013 12:25, Alberto Chamorro <
>>>>>>>>>>>> a.chamorro.ruiz en gmail.com> escribió:
>>>>>>>>>>>>
>>>>>>>>>>>>> Si lo tienes en un fichero .py comprueba la codificacion con
>>>>>>>>>>>>> la que has guardado el fichero (en unix seria con el comando file)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Tambien se recomienda añadir a los programas la linea de
>>>>>>>>>>>>> coding:
>>>>>>>>>>>>>
>>>>>>>>>>>>> # -*- coding: utf-8 -*-
>>>>>>>>>>>>>
>>>>>>>>>>>>> Un saludo
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Python-es mailing list
>>>>>>>>>>>>> Python-es en python.org
>>>>>>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>   *Diego Alonso Uribe Gamez*
>>>>>>>>>>>> ------------------------------
>>>>>>>>>>>>
>>>>>>>>>>>> *Desarrollador web*
>>>>>>>>>>>>
>>>>>>>>>>>> Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
>>>>>>>>>>>>
>>>>>>>>>>>> Google+: http://gplus.to/diegoug
>>>>>>>>>>>> ------------------------------
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Python-es mailing list
>>>>>>>>>>>> Python-es en python.org
>>>>>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Python-es mailing list
>>>>>>>>>>> Python-es en python.org
>>>>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Python-es mailing list
>>>>>>>>>> Python-es en python.org
>>>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>   *Diego Alonso Uribe Gamez*
>>>>>>>>> ------------------------------
>>>>>>>>>
>>>>>>>>> *Desarrollador web*
>>>>>>>>>
>>>>>>>>> Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
>>>>>>>>>
>>>>>>>>> Google+: http://gplus.to/diegoug
>>>>>>>>> ------------------------------
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Python-es mailing list
>>>>>>>>> Python-es en python.org
>>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Python-es mailing list
>>>>>>>> Python-es en python.org
>>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Andrey Antukh - Андрей Антух - <niwi en niwi.be>
>>>>>>> http://www.niwi.be/about.html
>>>>>>> http://www.kaleidos.net/A5694F/
>>>>>>>
>>>>>>> "Linux is for people who hate Windows, BSD is for people who love
>>>>>>> UNIX"
>>>>>>> "Social Engineer -> Because there is no patch for human stupidity"
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Python-es mailing list
>>>>>>> Python-es en python.org
>>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Python-es mailing list
>>>>>> Python-es en python.org
>>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Andrey Antukh - Андрей Антух - <niwi en niwi.be>
>>>>> http://www.niwi.be/about.html
>>>>> http://www.kaleidos.net/A5694F/
>>>>>
>>>>> "Linux is for people who hate Windows, BSD is for people who love UNIX"
>>>>> "Social Engineer -> Because there is no patch for human stupidity"
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> http://mail.python.org/mailman/listinfo/python-es
>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> http://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>>
>>> --
>>> Andrey Antukh - Андрей Антух - <niwi en niwi.be>
>>> http://www.niwi.be/about.html
>>> http://www.kaleidos.net/A5694F/
>>>
>>> "Linux is for people who hate Windows, BSD is for people who love UNIX"
>>> "Social Engineer -> Because there is no patch for human stupidity"
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> http://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Andrey Antukh - Андрей Антух - <niwi en niwi.be>
> http://www.niwi.be/about.html
> http://www.kaleidos.net/A5694F/
>
> "Linux is for people who hate Windows, BSD is for people who love UNIX"
> "Social Engineer -> Because there is no patch for human stupidity"
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
  *Diego Alonso Uribe Gamez*
------------------------------

*Desarrollador web*

Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>

Google+: http://gplus.to/diegoug
------------------------------
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130320/0d4fdfe4/attachment.html>


Más información sobre la lista de distribución Python-es