关于Python源码的编码问题

最近一段时间开始学习Python,或多或少的会在代码中进行中文注释或者是输出中文等。刚开始的时候我是在命令行下使用python,在编辑器下写好代码,python file.py 来运行,因而当代码中出现中文时便会出错,具体提示如下:


看了下错误提示,编码问题,那时有其他事情便不想纠结,我英语注释还行么。。。

后来使用Idle,当代码中出现中文时,F5运行便会出现提示:


看到# -*- coding: cp936 -*-注释格式引起了兴趣,便去上网搜一搜,便找到了Python官网的Python增强建议(PEPs)(实际在命令行运行时就给出了该链接,参加图1),关于编码具做了具体的阐述(http://www.python.org/dev/peps/pep-0263/):

    Python will default to ASCII as standard encoding if no other

    encoding hints are given.

 

    To define a source code encoding, a magiccomment must

    be placed into the source files either asfirst or second

    line in the file, such as:

 

          # coding=<encoding name>

 

    or (using formats recognized by populareditors)

 

          #!/usr/bin/python

          # -*- coding: <encoding name>-*-

 

    or

 

          #!/usr/bin/python

          # vim: set fileencoding=<encodingname> :

默认是ASCII,所以不指定编码则在代码中出现中文则会编译出错。

More precisely, the first or second line must match the regular expression "coding[:=]\s*([-\w.]+)". 

编码指定只能在第一或者第二行,否则会被忽略而默认为ASCII,并且编码指定格式是用上述则正表达式匹配,所以在前两行的注释行(甚至可以不是注释,加下述代码,只是演示,不推荐使用)中只要有coding: <encoding name>就行了,而大家经常用的-*-只是为了美观。

code = "coding: gb2312" # 在第一行,但不是注释
str = "你好"
print str


官网PEPs中关于编码有更详细的阐述,有兴趣的朋友可以自行阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值