推荐:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

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

或者(使用流行编辑器中的格式化方式)

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

或者

  1.  
    #!/usr/bin/python
  2.  
    # 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
          ...

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

[Python]编码声明:是coding:utf-8还是coding=urf-8呢的更多相关文章

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

    PEP 263 -- Defining Python Source Code Encodings | Python.org https://www.python.org/dev/peps/pep-02 ...

  2. python编码声明的位置很重要

    python在3.x版本之前,编码一直是一个很头痛的问题.在代码中如果要使用中文,通常都要在文件的头部注明# -*- coding:utf-8 -*- 这样IDE或者解释器才会智能的转换编码. 这其中 ...

  3. Python文件中执行脚本注释和编码声明

    在 Python 脚本的第一行经常见到这样的注释: #!/usr/bin/env python3 或者 #!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行 ...

  4. 【python】声明编码的格式

    来自:http://www.xuebuyuan.com/975181.html 编码声明必须在第一行或者第二行,且要符合正则表达式 "coding[:=]\s*([-\w.]+)" ...

  5. python编码详解--转自(Alex的博客)

    原文地址:http://www.cnblogs.com/alex3714/articles/7550940.html 编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答 这哥们 ...

  6. python编码(六)

    1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...

  7. 关于Python编码问题小记

    Python编码问题小记: 引子: 最近在复习redis,当我在获取redis的key的时候,redis 存储英文和汉字下面这个样子的,我知道汉字是用16进制的UTF-8编码了,然后突然很想搞清楚字符 ...

  8. python编码和解码

    一.什么是编码 编码是指信息从一种形式或格式转换为另一种形式或格式的过程. 在计算机中,编码,简而言之,就是将人能够读懂的信息(通常称为明文)转换为计算机能够读懂的信息.众所周知,计算机能够读懂的是高 ...

  9. Python编码---转自金角大王

    本节内容 编码回顾 编码转换 Python的bytes类型 编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答 这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有 ...

随机推荐

  1. JQUery利用Uploadify插件实现文件异步上传(十一)

    一:简介: Uploadify是JQuery的一个上传插件,实现的效果非常好,带进度显示 ,且Ajax异步,能一次性上传多个文件,功能强大,使用简单 1.支持单文件或多文件上传,可控制并发上传的文件数 ...

  2. struts2的文件上传和文件下载

    实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...

  3. [转] 理解Web路由

    1. 什么是路由 在Web开发过程中,经常会遇到『路由』的概念.那么,到底什么是路由?简单来说,路由就是URL到函数的映射. 2. router和route的区别 route就是一条路由,它将一个UR ...

  4. POJ 2229 Sumsets【DP】

    题意:把n拆分为2的幂相加的形式,问有多少种拆分方法. 分析:dp,任何dp一定要注意各个状态来源不能有重复情况.根据奇偶分两种情况,如果n是奇数则与n-1的情况相同.如果n是偶数则还可以分为两种情况 ...

  5. 【Java】 剑指offer(2) 不修改数组找出重复的数字

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至少 ...

  6. Sea Battle CodeForces - 729D

    题意: 有n个格子,a条船,每条船占b个格子.事先已经射击了k个格子,且这k次射击不会射到船上,求再射击几次可以射到某一条船的某一部分 思路: 观察样例可以发现,如果五个0,船的长度是3,那么这五个0 ...

  7. HDU 1495 非常可乐【BFS】

    题目链接:https://vjudge.net/problem/HDU-1495 转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/6750320.ht ...

  8. 【python学习-6】异常处理

    最近在网上看到了一种学习方法名叫费曼学习法,说的是学习一个东西的时候,要尝试着给别人讲出来,就是一种备课式的学习. 第一步,选择一个你想要理解的概念, 然后拿出一张白纸, 把这个概念写在白纸的最上边. ...

  9. android db 导入 手机 系统 目录 data/data/包名/databases

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha ======== 需要权限, 权限不足. 就算root之后,把这些都改成了777权限,仍 ...

  10. 安卓 logcat设置 Android logcat Settings

    安卓 logcat设置 Android logcat Settings 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 3131 ...