The simplejson has some problem when you use chinese character in utf-8

for example ,below chinese dictionary

dict={"adviser":"n.顾问, <美> (学生的)指导老师","od":"dd"}

show be encoded as ,

{"adviser": "n.\u987e\u95ee, <\u7f8e>
(\u5b66\u751f\u7684)\u6307\u5bfc\u8001\u5e08", "od": "dd"}


but the simplejson encode it wrong as below

{"adviser": "n.\u00e9\u00a1\u00be\u00e9\u0097\u00ae,
<\u00e7\u00be\u008e>
(\u00e5\u00ad\u00a6\u00e7\u0094\u009f\u00e7\u009a\u0084)\u00e6\u008c\u0087\u00e5\u00af\u00bc\u00e8\u0080\u0081\u00e5\u00b8\u0088",
"od": "dd"}

There is some codes can fix this problem , would some one merge this
into svn ? :)

from django.http import HttpResponse
from django.utils import simplejson
from django.conf import settings

def json_to_response(data):
    encode = settings.DEFAULT_CHARSET
    return HttpResponse(simplejson.dumps(uni_str(data, encode)))

def uni_str(a, encoding):
    if isinstance(a, (list, tuple)):
        s = []
        for i, k in enumerate(a):
            s.append(uni_str(k, encoding))
        return s
    elif isinstance(a, dict):
        s ={}
        for i, k in enumerate(a.items()):
            key, value = k
            s[uni_str(key, encoding)] = uni_str(value, encoding)
        return s
    elif isinstance(a, str):
        return unicode(a, encoding)
    elif isinstance(a, unicode):
        return a
    else:
        return a


-- 
I'm Earth-Man.
我是地球人.
        --zsp(张沈鹏)

--~--~---------~--~----~------------~-------~--~----~
 You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to