定义 Python 源代码编码的正确方法
- 2025-01-08 08:50:00
- admin 原创
- 25
问题描述:
PEP 263定义了如何声明 Python 源代码编码。通常,Python 文件的前两行应该以以下内容开头:
#!/usr/bin/python
# -*- coding: <encoding name> -*-
但是我看到很多文件以以下内容开头:
#!/usr/bin/python
# -*- encoding: <encoding name> -*-
即,它说的encoding
是而不是coding
。
文件编码该如何声明?
尝试在 Python 脚本中使用非 ASCII 文本时,请使用“SyntaxError:非 ASCII 字符 ...”或“SyntaxError:以 ... 开头的非 UTF-8 代码”来关闭有关因缺少或错误编码声明而导致的语法错误的重复问题。另一方面,这个问题是关于如何编写声明以及是否有必要的问题的典型问题。
解决方案 1:
在此处查看文档:
“如果 Python 脚本第一行或第二行的注释与正则表达式匹配coding[=:]s*([-w.]+)
,则该注释将被视为编码声明”
“此表达式的推荐形式为
# -*- coding: <encoding-name> -*-
GNU Emacs 也认可这一点,并且
# vim:fileencoding=<encoding-name>
它被 Bram Moolenaar 的 VIM 所识别。”
因此,您可以在“编码”部分之前放置任何内容,但如果您想要 100% 兼容 python-docs-recommendation,请坚持使用“编码”(没有前缀)。
更具体地说,您需要使用 Python和您使用的特定编辑软件所识别的任何内容(如果它需要/接受任何东西)。例如,coding
GNU Emacs 可以识别(开箱即用)该表单,但 Vim 无法识别(是的,如果没有一个普遍的协议,这本质上就是一场地盘之争)。
解决方案 2:
PEP 263:
第一行或第二行必须匹配正则表达式“coding[:=]\s*([-\w.]+)”
因此,“en encoding: UTF-8 ”匹配。
PEP 提供了一些示例:
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
# This Python file uses the following encoding: utf-8
import os, sys
解决方案 3:
只需将下面的语句复制粘贴到程序顶部即可解决字符编码问题
#!/usr/bin/env python
# -*- coding: utf-8 -*-
解决方案 4:
截至今日——2018 年 6 月
PEP 263本身提到了它所遵循的正则表达式:
要定义源代码编码,必须将魔术注释放入源文件中,作为文件的第一行或第二行,例如:
# coding=<encoding name>
或(使用流行编辑器识别的格式):
#!/usr/bin/python # -*- coding: <encoding name> -*-
或者:
#!/usr/bin/python # vim: set fileencoding=<encoding name> :
更准确地说,第一行或第二行必须与以下正则表达式匹配:
^[ ]*#.*?coding[:=][ ]*([-_.a-zA-Z0-9]+)
因此,正如其他答案已经总结的那样,它会coding
与任何前缀匹配,但如果你想尽可能地符合 PEP 标准(尽管据我所知,使用encoding
而coding
不是不会以任何方式违反 PEP 263) - 坚持使用 'plain' coding
,不带前缀。
解决方案 5:
我认为它与 Ruby 类似——两种方法都可以。
这主要是因为不同的文本编辑器使用不同的方法(即这两种)来标记编码。
使用 Ruby,只要第一行或第二行如果有一个 shebang 包含匹配的字符串:
coding: encoding-name
并忽略这些行上的任何空格和其他无用信息。(通常也可以用 = 代替 :)。
解决方案 6:
如果我没记错的话,源文件编码的原始提议是对前几行使用正则表达式,这样可以同时允许两者。
我认为正则表达式类似于后面coding:
跟着一些东西。
我发现了这个: http: //www.python.org/dev/peps/pep-0263/
这是最初的提案,但我似乎找不到最终的规范来确切说明他们做了什么。
我确实使用过,encoding:
效果非常好,所以显然它有效。
尝试改变一些完全不同的东西,看看duhcoding: ...
是否同样有效。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件