在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。

 

withopen("test")asf:
foriinf:
# 将读入的utf-8字节流进行解码
u=i.decode('utf-8')