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 if no other
    encoding hints are given.

    To define a source code encoding, a magic comment must
    be placed into the source files either as first or second
    line in the file, such as:

          # coding=<encoding name>

    or (using formats recognized by popular editors)

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

    or

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

    More precisely, the first or second line must match the regular
    expression "coding[:=]\s*([-\w.]+)". The first group of this
    expression is then interpreted as encoding name. If the encoding
    is unknown to Python, an error is raised during compilation. There
    must not be any Python statement on the line that contains the
    encoding declaration.

PEP 的全名是 Python Enhancement Proposals, "Python 增強建議書" ,它是用來規範與定義 Python 的各種加強與延伸功能的技術規格。

每個 PEP 都有一個編號而且是唯一的,這個編號一旦給定了就不會再改變,例如,PEP 3000 就是用來定義 Python 3.0 的相關技術規格,而 PEP 333 則是 Python 的 Web 應用程式介面 WSGI (Web Server Gateway Interface 1.0) 的規範

關於 PEP 本身的相關規範是定義在 PEP 1,而所有的 PEP 列表則是在這裡

Read more: http://www.arthurtoday.com/2009/11/python-pep.html#ixzz46oH9oBzV

学习:http://blog.csdn.net/orangleliu/article/details/8755461

时间: 2024-10-08 12:39:50

python文件编码说明 coding的相关文章

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

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

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

转自: http://blog.csdn.net/arbel/article/details/7957782 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码. [python] view plaincopy # -*- coding:utf-8 -*- 问题就来了,为什么要如此声明? 首先请参考python的PEP http://www.python.org/dev/peps/pep-0263/ 概要如下 1.必须将编码

Python 文件编码问题解决

最近使用python操作文件,经常遇到编码错误的问题,例如: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbe in position 350: in 我看百度的解决方法就是手动指定编码方式,类似于以下这种方式: encoding="UTF-8" 虽然这种类似的方法也能解决.但是这种方法只能靠运气去碰,如果刚好碰到文件编码和你指定的编码一致,那么就不会报错了.这种方式在尝试的过程就会很麻烦. 这里就有一个解决的小技巧,我们

编码部分历史及python文件编码简介

UTF-8 = unicode的扩展集,可变长的字符编码集 ascii --> gb2312 --> gbk1.0 -->gb18030 ascii --> unicode --> utf-8 Python2.x == ascii是其默认编码 如果在2.x中需要使用utf-8,需要以下声明: #!-*- coding:utf-8 -*- #coding:utf-8 Python3.x == unicode是其默认编码 unicode是向下兼容gb2312和gbk 原文地址:h

【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 &ndash; 指定文件编码类型

下面的内容来自:http://www.cnblogs.com/blueskylcc/p/5332642.html, 对方也是转的,不过没有找到转载的出处: 1.#!/usr/bin/python 是用来说明脚本语言是 python 的 是要用 /usr/bin下面的程序(工具)python,这个解释器,来解释 python 脚本,来运行 python 脚本的. 2.# -*- coding: utf-8 -*- 是用来指定文件编码为 utf-8 的 详情可以参考:PEP 0263 - Defin

python声明文件编码,必须在文件的第一行或第二行

#coding=utf-8和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型 注意的两点: 1.声明必须在文件的第一行或第二行: 2.coding后面必须紧跟冒号或等号,#coding : utf-8是错的. 例: 声明编码前有字符串 1 '''testing user longin''' 2 #coding:utf-8 3 4 print u'''登录相关的测试''' 或 声明编码位于第三行 1 #'test' 2 3 #coding:utf-8 4 5 print

linux之系统编码,python编码,文件编码

1     前言 如果你对python2和python3的中编解码很清楚,这里我认为你很清楚. 具体参考文档: "python2 encode和decode函数说明.docx" "字符编码--从ASCII开始.docx" 以上所有文档均为本地文档. 2     Python编码 sys.getdefaultencoding(): 获取系统当前编码,这里的系统指的是python自己的内置系统,并非操作系统,即3中的python编码. sys.setdefaultenc

[译]如何定义python源文件的文件编码

简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持书写Unicode编码,例如在一个支持unicode编码的编辑器中使用UTF-8. 问题 在python2.1中,unicode编码只能通过Latin-1中的“unicode-escape”的方式来实现.这让很多平时不使用Latin-1编码的用户感到非常的不友好,尤其是大多数的亚洲国家更是这样.程序

多线程批量转换文件编码, 从GBK, GB2312编码转换到UTF-8编码(Python)

# coding=utf-8 # author:Jeffrey Ma # version:0.1 # build 2 # created on:2015年3月31日 # description: 1. 批量转换文件编码,从GBK GB2312编码转换到UTF-8编码 # 2. 支持指定目录下所有的文件的转换,包括子目录中的文件 # 3. 支持检测原始编码,对已经是UTF-8编码的文件,不做转换 # 4. 支持只转换指定扩展名的编码 # 5. 支持多线程转换和控制台输出 # 6. 支持控制台显示线