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


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

    [Python]编码声明:是coding:utf-8还是coding=utf-8呢_Python_orangleliu 笔记本-CSDN博客 https://blog.csdn.net/orangleliu/article/details/8755461

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

  • 相关阅读:
    [BZOJ 1552] 排序机械臂
    [BZOJ 1124][POI 2008] 枪战 Maf
    [BZOJ 1647][USACO 2007 Open] Fliptile 翻格子游戏
    [BZOJ 1592] Making The Grade路面修整
    [BZOJ 3829][POI2014] FarmCraft
    [技术] 如何正确食用cnblogs的CSS定制
    [BZOJ 1458] 士兵占领
    今天写了一个Imageloader,,AndroidStudio报了Error:Execution failed for task ':app:mergeDebugResources'. > Error: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: 这个错误
    Http响应码代表的含义
    获取WIFI列表,在旧手机上运行就没有问题,在新手机上就怎么也获取不到WIFI列表,长度一直为0,还不报异常,很疑惑。
  • 原文地址:https://www.cnblogs.com/rsapaper/p/10483110.html
Copyright © 2020-2023  润新知