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

标签: python编码utf-8coding声明
15521人阅读 评论(0) 收藏 举报
分类:

我们知道在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
          ...

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1307307次
    • 积分:17193
    • 等级:
    • 排名:第588名
    • 原创:444篇
    • 转载:35篇
    • 译文:22篇
    • 评论:106条
    感谢支持
    一起玩
    统计