[python] 字符编码

       最近学习python的字符编码,因为用的是python27, 众所周知python2的字符编码对中文非常非常不友好,所以将学习成

果分享一下。

       在编程中设计到编码的地方主要有两个:

    1.脚本文件的编码

       我们在读写文件的时候,文件都是有编码的,比如windows下一般默认是gbk,linux下一般是utf-8。

       在windows下用IDE编写python27程序, 脚本文件一般是ASCII格式,编译器在将python源文件编译为字节码文件的时候,

无法将中文编译为ASCII码,所以在文件中不管代码还是注释出现中文的时候就会出现下面情况:

st = u"中"
print str


       上面的问题在IDE中会出现,在命令行不会出现,因为python在windows命令行的文件编码格式为cp936,近似于GBK,所以

能够识别中文


       在pycharm等IDE中则需要转换一下格式,python文件转换格式只需在文件头加上“encoding=utf8”

 
# encoding=utf8
st = "中"
print st

    2. 内存中变量的编码

      上面的注释只是让源文件中的中文变量能够编码读入内存,源文件编译之后需要在内存中运行代码。python27的默认编

码是ASCII,假如我们调用encode对变量进行编码的时候,如果没有先解码,则会调用系统默认的编码格式进行解码,此处中文

会报错

# encoding=utf8
st = "中"
print st.encode('utf8')

      我们可以通过调用sys.getdefaultencoding()可以打印默认编码,也可以通过sys.setdefaultencoding()来重新设置默认编码

# encoding=utf8
import sys
reload(sys)
print sys.getdefaultencoding()
sys.setdefaultencoding('utf8')
print sys.getdefaultencoding()
st = "啊额"
print st.encode('utf8')





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值