我注意到json.dumps总是将字符串转换为UTF-8,我该如何防止这种情况发生?我应该自己对这些值进行编码和解码吗?这里是用例,我希望x ['a']和y ['a']是相同的。防止json.dumps转换为unicode
x = {'a': '\xc3\xa6', 'b':u'æ', 'c':u'\xe6'}
print type(x['a']), x
<type 'str'> {'a': '\xc3\xa6', 'c': u'\xe6', 'b': u'\xe6'}
t = json.dumps(x)
print type(t),t
<type 'str'> {"a": "\u00e6", "c": "\u00e6", "b": "\u00e6"}
y = json.loads(t)
print type(y['a']),y
<type 'unicode'> {u'a': u'\xe6', u'c': u'\xe6', u'b': u'\xe6'}
JSON字符串可以代表任何Unicode字符,因此使用Python的'unicode'类型是自然的选择。如果你想拥有字节(Python 2的'str'),那么根据Python的Zen,编码显然比依赖一些隐式强制要好(如第一步中'\ xc3 \ xa6'所发生的那样)。 – lenz
为什么你想要'str'呢?如果只是'u'前缀烦你,那么升级到Python 3可能是最好的选择。 – lenz
你会如何让''\ xc3 \ xa6''以JSON表示? JSON没有字节类型,因此您的选项可以是解码或转换为整数数组。 – lenz