[Python]编码声明:是coding:utf-8还是coding=urf-8呢

原创 2013年04月03日 13:36:53

我们知道在Python源码的头文件中要声明编码方式,如果你不只是会用到ascii码,很多人都写得都有点差别:

#coding=utf-8

#coding:utf-8

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

那么怎样写才是有效地呢,哪些优势无效的呢? 

可以查看下http://www.python.org/dev/peps/pep-0263/的解释

粗略的看下:



概要:

    这个PEP的目的是介绍在一个Python源文件中如何声明编码的语法。随后Python解释器会在解释文件的时候用到这些编码信息。最显著的是源文件中对Unicode的解释,使得在一个能识别Unicode的编辑器中使用如FUT-8编码成为可能


怎么声明呢?

如果在Python中我们并没有声明别的编码方式,就是以ASCII编码作为标准编码方式的
为了定义源文件的编码方式,一个魔法是的声明应当被放在这个文件的第一行或者是第二行例如:
#coding=<encoding name>

或者(使用流行编辑器中的格式化方式)
#!/usr/bin/python
# -*- coding: <encoding name> -*-

或者
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

不管怎么样,这些在第一行或者第二行的声明都要符合正则表达式 
 "coding[:=]\s*([-\w.]+)"

所以我们就可以知道为什么使用冒号或者等号都可以了,如果声明的编码python不能识别就会报错


Examples

    These are some examples to clarify the different styles for
    defining the source code encoding at the top of a Python source
    file:


    1. With interpreter binary and using Emacs style file encoding
       comment:


          #!/usr/bin/python
          # -*- coding: latin-1 -*-
          import os, sys
          ...


          #!/usr/bin/python
          # -*- coding: iso-8859-15 -*-
          import os, sys
          ...


          #!/usr/bin/python
          # -*- coding: ascii -*-
          import os, sys
          ...


    2. Without interpreter line, using plain text:


          # This Python file uses the following encoding: utf-8
          import os, sys
          ...


    3. Text editors might have different ways of defining the file's
       encoding, e.g.


          #!/usr/local/bin/python
          # coding: latin-1
          import os, sys
          ...


    4. Without encoding comment, Python's parser will assume ASCII
       text:


          #!/usr/local/bin/python
          import os, sys
          ...


    5. Encoding comments which don't work:


       Missing "coding:" prefix:


          #!/usr/local/bin/python
          # latin-1
          import os, sys
          ...


       Encoding comment not on line 1 or 2:


          #!/usr/local/bin/python
          #
          # -*- coding: latin-1 -*-
          import os, sys
          ...


       Unsupported encoding:


          #!/usr/local/bin/python
          # -*- coding: utf-42 -*-
          import os, sys
          ...

以上几个例子充分说明了哪些是正确的写法,哪些是正确的写法


版权声明:本文为orangleliu (http://blog.csdn.net/orangleliu/)原创文章,自由传播,文章转载请声明, 多谢。

Python的编码注释# -*- coding:utf-8 -*-

如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。 # -*- coding:utf-8 -*- 问题就来了,为什...
  • arbel
  • arbel
  • 2012年09月08日 18:50
  • 182880

#coding=utf-8的作用 还是乱码

乱码产生的原因是Python在读取时默认解码方式是用操作系统编码,如果和保存时的编码方式不一样,就会出现乱码 比如以下片段,文件保存格式是utf-8 #coding=utf-8 print...
  • py693fz720
  • py693fz720
  • 2017年08月21日 23:37
  • 391

#coding=utf-8 只能放在第1,2行

今天写了个小程序,发现编码错误,无法print 中文,经过阅读文档发现: #coding=utf-8 1.只能放在第1,2行中 比如在第3行 程序就出错了,其他编码方式也一样。 2.#codi...
  • leejearl
  • leejearl
  • 2012年02月28日 14:33
  • 2327

python 中文编码 #-*-coding:utf-8-*-

在Python文件开头处输入两行代码: #!/usr/bin/env python #-*- coding: utf-8 -*- 第一行注释事为了告诉Linux/OS X系统,这是一个Python...
  • u012005313
  • u012005313
  • 2015年08月27日 17:50
  • 2522

关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定

#!/usr/bin/python 是用来说明脚本语言是python的 是要用/usr/bin下面的程序(工具)python,这个解释器,来解释python脚本,来运行python脚本的。   ...
  • Xw_Classmate
  • Xw_Classmate
  • 2016年07月17日 19:41
  • 13291

Python的编码注释# -*- coding:utf-8 -*-

如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。 [python] view plain copy...
  • weiqubo
  • weiqubo
  • 2017年04月24日 14:25
  • 1793

Python 中文处理 UTF-8

#python处理中文三种方式: #'#coding=utf-8'使用utf-8编码#coding=utf-8 # 假设name为str类型 #print name.decode('utf-8'...
  • chenyechao
  • chenyechao
  • 2012年12月29日 00:02
  • 3672

论#coding=utf-8的位置

1.必须要在第一行或者第二行。 2.必须要在可执行代码和中文注释的前面。 3.如果页面没有中文,那么它只是一个普通注释,位置任意都行。对的写法:#coding=utf-8 #为未为 print "...
  • u012643122
  • u012643122
  • 2016年11月03日 15:54
  • 941

Python的编码注释# -*- coding:utf-8 -*-

http://blog.csdn.net/arbel/article/details/7957782 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则...
  • CNHK1225
  • CNHK1225
  • 2016年08月27日 06:52
  • 995

python 的#-*-conding:utf-8-*- 和#encoding=utf-8

如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。 [python] view plaincopy ...
  • chenlei_525
  • chenlei_525
  • 2013年06月07日 15:27
  • 2095
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Python]编码声明:是coding:utf-8还是coding=urf-8呢
举报原因:
原因补充:

(最多只允许输入30个字)