(此问题与this one)
有关看看下面的会话:
Python 2.7.3 (default, Jan 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import simplejson as json
>>>
>>> my_json = '''[
... {
... "id" : "normal",
... "txt" : "This is a normal entry"
... },
... {
... "id" : "αβγδ",
... "txt" : "This is a unicode entry"
... }
... ]'''
>>>
>>> cache = json.loads(my_json, encoding='utf-8')
>>>
>>> cache
[{'txt': 'This is a normal entry', 'id': 'normal'}, {'txt': 'This is a unicode entry', 'id': u'\u03b1\u03b2\u03b3\u03b4'}]
为什么json解码器有时会生成unicode,有时会生成简单的字符串?是不是应该生成总是 unicode? p>
答案 0 :(得分:4)
似乎是simplejson中的优化,来自simplejson docs:
如果s是str,那么解码的仅包含ASCII字符的JSON字符串可能因性能和内存原因而被解析为str。如果您的代码只需要unicode,则在调用decode之前将相应的解码解码为unicode。
注意: ASCII中包含的任何字符都以UTF-8和ASCII编码相同。所以ASCII是UTF-8的子集。