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

转自: http://blog.csdn.net/arbel/article/details/7957782

如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。

[python] view plaincopy

  1. # -*- coding:utf-8 -*-

问题就来了,为什么要如此声明?

首先请参考python的PEP http://www.python.org/dev/peps/pep-0263/

概要如下

1.必须将编码注释放在第一行或者第二行

2.可选格式有

[python] view plaincopy

  1. # coding=<encoding name>

[python] view plaincopy

  1. #!/usr/bin/python
  2. # -*- coding: <encoding name> -*-

[python] view plaincopy

  1. #!/usr/bin/python
  2. # vim: set fileencoding=<encoding name> :

但是再往下看,发现其实只要注释里面有coding 和对应的编码就可以了,例如

[python] view plaincopy

  1. #!/usr/bin/python
  2. # vim: set fileencoding=<encoding name> :

所以搞了半天对最标准的做法也有点糊涂了。

后来想了想,看了下VIM中对python的语法高亮文件,里面把如下的正则表达式确定为编码声明

[plain] view plaincopy

  1. \%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$

对于这个正则有些有点看不懂,但是大致如下必须有coding:[编码]或者coding=[编码]才行,这个应该可以视作为标准的声明方式吧。

但是为什么通常这种方式呢?

[python] view plaincopy

  1. # -*- coding:utf-8 -*-

答案在PEP-0263里面有所提及,那就是Emacs等编辑器使用这种方式进行编码声明。

话说PEP里面很多东西都是很值得参考的毕竟可以知道为什么程序这样设计。

时间: 2024-11-01 17:37:31

Python的编码注释# -*- coding:utf-8 -*-的相关文章

python文件编码说明 coding=utf-8

python 支持3种编码声明,一般常用能见到下面两种 1.# -*- coding: utf-8 -*- 这种写法是为了兼容Emacs的编码声明 2.短一点,但Emacs不能用# coding=utf-8 短一点,但Emacs不能用 之所以要声明未编码类型 ,主要是中文出错的问题. 在python 文件开头(一般是第一行或第二行),用来说明你的Python源程序文件用使用的编码.缺省情况下你的程序需要使用ascii码来写,但如果在其中写中文的话,python解释器一般会报错,但如果加上你所用的

python文件编码说明 coding

权威来源:http://www.python.org/dev/peps/pep-0263/Python源文件的头部声明(声明在文件的第一行或第二行) # coding=utf-8 # coding:utf-8 # -*- coding:utf-8 -*- 要符合正则规范"coding[:=]\s*([-\w.]+)"  注意 :或=前后没有空格 Defining the Encoding Python will default to ASCII as standard encoding

Python中编码的详细讲解

看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符 ks_c_5601-1987 韩国编码 TIS-620 泰国编码 由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其他国家字符的对应关系.应运而生出现了万国码,他涵盖了全球所有的文字和二进制的对应关系, U

【转】Python字符编码详解

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

19.python的编码问题

在正式说明之前,先给大家一个参考资料:戳这里 文章的内容参考了这篇资料,并加以总结,为了避免我总结的不够完善,或者说出现什么错误的地方,有疑问的地方大家可以看看上面那篇文章. 下面开始讲python中的编码问题,首先,我们看看编码有哪些. 1. ASCII ASCII是用一个字节表示字符,而一个字节由八位二进制组成,所以能产生2**8=256种变化,在计算机刚诞生的年代,用来表示大小写的26个英文字母,外加一些符号之类的还是绰绰有余的.这也是python2.x中默认使用的编码,所以在python

Python字符编码详解(转)

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

Python使用中文注释和输出中文(原创)

刚开始学习python,需要在Python中注释中文和输出中文,现在开始尝试: 仅为初步学习参考,高手请绕行. ----------------------------------------------------------------------- 第一步:在代码中输入以下命令,执行: #在Python中显示中文注释和输出中文a ="中文"print a 返回错误: d:\Python27\python.exe "D:\test\中文.py"Process s

Python字符编码 zz

http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBC

python字符编码与解码 unicode,str

字符编码 计算机中的字符都是以特定的编码形式存放的,从最早的ascii到后来的Unicode以及UTF-8, 在python中, 字符串str也是是区分编码的,在各种编码的字符串之间,有一座桥梁,就是unicode类型. str, unicode str转到unicode需要解码,即decode:反之,unicode转到str需要编码,即encode: str              -- (decode) -->         unicode unicode     -- (encode)