在Python的类型层次中,有3种不同的字符串类型:“unicode”,表示Unicode字符串(文本字符串)、“str”,表示字节字符串(二进制数据);“basestring”。表示前两种字符串类型的父类。
fat_phone = request.GET['phone'] 该类型为unicode类型
[fat_phone] 输出为 [u'13217788111']
print [fat_phone.encode("utf-8")] 将unicode 转换为['13217788111']
# print json.dumps(jsonkv).decode("unicode-escape") 将u编码转换为中文
jsonreturn = json.dumps(jsonkv).decode("unicode-escape
后台传过来的json格式如何在前台获取:
function(data,status){
var tab=data; 此时为[object object]
for(var i=0;i<tab.length;i++){
var obj=tab[i]; 这样获取数据
alert(obj.errorinfo)
}
});
s.encode("utf-8") 等价于 s.decode(defaultencoding).encode("utf-8")
文件头声明编码的作用。
这要感谢这篇博客关于python文件头部分知识的讲解。
顶部的:# -*- coding: utf-8 -*-目前看来有三个作用。
如果代码中有中文注释,就需要此声明
比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。
程序会通过头部声明,解码初始化 u”人生苦短”,这样的unicode对象,(所以头部声明和代码的存储格式要一致)
程序内外要统一
如果说程序内部要保证只用unicode,那么在从外部读如字节流的时候,一定要将这些字节流转化为unicode,在后面的代码中去处理unicode,而不是str。
with open("test") as f:
for i in f:
# 将读入的utf-8字节流进行解码
u = i.decode('utf-8')