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

Andrey Antukh niwi en niwi.be
Mie Mar 20 23:41:21 CET 2013


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"
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130320/282eb0b1/attachment.html>


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