python 编码处理

系统 1482 0

一、python有两种字符串类型:str和unicode
1、str:常用的字符集如:gb2312、gb18030/gbk、utf-8、ascii,这些都是字符的二进制(字节)编码形式
2、unicode:Python 认为 16 位的 unicode 才是字符的唯一内码
3、encode:从unicode转换成二进制编码,即从unicode转换成str
4、decode:从二进制编码转换成unicode
5、在进行同时包含str与unicode的运算时,Python一律都把str转换成unicode再运算,当然,运算结果也都是unicode。
6、建议在

python代码

            
              # -*- coding: utf-8 -*-  

#第一行表明python代码由utf-8编码

#-----------------------------------------1----------------------------------------
s='我是谁'  #这是个str的字符串,是utf-8字符串
u=u'我是谁' #这是个unicode字符串

s.decode('utf-8') #从str转成unicode,即用utf-8解码字符串s
u.encode('utf-8') #从unicode转成str,即将unicode码按utf-8编码成字符串

s.decode('ascii') #错误,用ascii解码utf-8字符串
s.decode('gbk')   #不出错,但出现乱码

u.encode('ascii') #错误,中文无法用ascii字符集编码
u.encode('gbk')   #不出错,但会出现乱码

#-----------------------------------------2------------------------------------------
#注意一:在进行同时包含str与unicode的运算时,Python一律都把str转换成unicode再运算,当然,运算结果也都是unicode。

"中文:%s" % s  # 正确,所有的字符串都是 str, 不需要 decode  
"中文:%s" % u  # 失败,相当于运行:"中文:%s".decode('ascii') % u ,为什么是ascii,因为sys.getdefaultencoding()默认是ascii

import sys
reload(sys)                      # reload 才能调用 setdefaultencoding 方法  
sys.setdefaultencoding('utf-8')  # 设置 'utf-8',这个是全局的,对当前程序运行的所有python代码都起作用

#若 linux的$LANG为zh_CN.GBK,则print s输出到终端时会出现乱码,但print u输出到终端不会乱码,会将u按$LANG的字符集编码
            
          

 

参考:https://in355hz.iteye.com/blog/1860787


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论