博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python json 数据库字符串

Posted on 2017-09-21 14:33  bw_0927  阅读(163)  评论(0)    收藏  举报

http://www.cnblogs.com/stubborn412/p/3818423.html

http://www.cnblogs.com/my_life/articles/7283778.html

 

python一般从数据库中读取的字符串会自动被转换为unicode字符串

 

 

Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。

函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式

str()出来的值是给人看的。。。repr()出来的值是给python看的,可以通过eval()重新变回一个Python对象

 

我们知道,python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串

下面回到重点,使用json.dumps时,一般的用法为:

>>> obj={"name":"测试"}

>>> json.dumps(obj)
'{"name": "\\u6d4b\\u8bd5"}'

>>> print json.dumps(obj)
{"name": "\u6d4b\u8bd5"}

>>> json.dumps(obj).encode("utf-8") 
'{"name": "\\u6d4b\\u8bd5"}'

可以看到这里输出的字符串为普通字符串,但是里面的内容却是unicode字符串的内容,即使对结果进行encode("utf-8") ,因为这个字符串本身就已经编码过了,所有进行encode不会有变化

 

要想得到字符串的真实表示,需要用到参数ensure_ascii=False(默认为True)

>>> json.dumps(obj,ensure_ascii=False)  
'{"name": "\xe6\xb5\x8b\xe8\xaf\x95"}'

>>> print json.dumps(obj,ensure_ascii=False)
{"name": "测试"}