Python源文件的编码
Python源文件的编码
入门教程->2.2.1 源文件的字符编码
参考官网:https://docs.python.org/zh-cn/3.9/tutorial/interpreter.html
默认情况下,Python 源码文件的编码是 UTF-8。
如果不使用默认编码,则要声明文件的编码,文件的 第一 行要写成特殊注释。句法如下:
# -*- coding: encoding -*-
其中,encoding 可以是参考附录1
比如,声明使用 Windows-1252 编码,源码文件要写成:
# -*- coding: cp1252 -*-
第一行 的规则也有一种例外情况,源码以 UNIX "shebang" 行开头。此时,编码声明要写在文件的第二行。例如:
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
语言参考->2.1.4编码声明
Python 脚本第一或第二行的注释匹配正则表达式 coding[=:]\s*([-\w.]+)时,该注释会被当作编码声明;这个表达式的第一组指定了源码文件的编码。编码声明必须独占一行,在第二行时,则第一行必须也是注释。编码表达式的形式如下:
# -*- coding: <encoding-name> -*-
这也是 GNU Emacs 认可的形式,此外,还支持如下形式:
# vim:fileencoding=<encoding-name>
这是 Bram Moolenaar 的 VIM 认可的形式。
没有编码声明时,默认编码为 UTF-8。此外,如果文件的首字节为 UTF-8 字节顺序标志(b'\xef\xbb\xbf'),文件编码也声明为 UTF-8(这是 Microsoft 的 notepad 等软件支持的形式)
附录1: codesc
| 编码 | 别名 | 语言 |
|---|---|---|
| ascii | 646, us-ascii | 英语 |
| big5 | big5-tw, csbig5 | 繁体中文 |
| big5hkscs | big5-hkscs, hkscs | 繁体中文 |
| cp037 | IBM037, IBM039 | 英语 |
| cp273 | 273, IBM273, csIBM273 | 德语3.4 新版功能. |
| cp424 | EBCDIC-CP-HE, IBM424 | 希伯来语 |
| cp437 | 437, IBM437 | 英语 |
| cp500 | EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 | 西欧 |
| cp720 | 阿拉伯语 | |
| cp737 | 希腊语 | |
| cp775 | IBM775 | 波罗的海语言 |
| cp850 | 850, IBM850 | 西欧 |
| cp852 | 852, IBM852 | 中欧和东欧 |
| cp855 | 855, IBM855 | 保加利亚语,白俄罗斯语,马其顿语,俄语,塞尔维亚语 |
| cp856 | 希伯来语 | |
| cp857 | 857, IBM857 | 土耳其语 |
| cp858 | 858, IBM858 | 西欧 |
| cp860 | 860, IBM860 | 葡萄牙语 |
| cp861 | 861, CP-IS, IBM861 | 冰岛语 |
| cp862 | 862, IBM862 | 希伯来语 |
| cp863 | 863, IBM863 | 加拿大语 |
| cp864 | IBM864 | 阿拉伯语 |
| cp865 | 865, IBM865 | 丹麦语/挪威语 |
| cp866 | 866, IBM866 | 俄语 |
| cp869 | 869, CP-GR, IBM869 | 希腊语 |
| cp874 | 泰语 | |
| cp875 | 希腊语 | |
| cp932 | 932, ms932, mskanji, ms-kanji | 日语 |
| cp949 | 949, ms949, uhc | 韩语 |
| cp950 | 950, ms950 | 繁体中文 |
| cp1006 | 乌尔都语 | |
| cp1026 | ibm1026 | 土耳其语 |
| cp1125 | 1125, ibm1125, cp866u, ruscii | 乌克兰语3.4 新版功能. |
| cp1140 | ibm1140 | 西欧 |
| cp1250 | windows-1250 | 中欧和东欧 |
| cp1251 | windows-1251 | 保加利亚语,白俄罗斯语,马其顿语,俄语,塞尔维亚语 |
| cp1252 | windows-1252 | 西欧 |
| cp1253 | windows-1253 | 希腊语 |
| cp1254 | windows-1254 | 土耳其语 |
| cp1255 | windows-1255 | 希伯来语 |
| cp1256 | windows-1256 | 阿拉伯语 |
| cp1257 | windows-1257 | 波罗的海语言 |
| cp1258 | windows-1258 | 越南语 |
| euc_jp | eucjp, ujis, u-jis | 日语 |
| euc_jis_2004 | jisx0213, eucjis2004 | 日语 |
| euc_jisx0213 | eucjisx0213 | 日语 |
| euc_kr | euckr, korean, ksc5601, ks_c-5601, ks_c-5601-1987, ksx1001, ks_x-1001 | 韩语 |
| gb2312 | chinese, csiso58gb231280, euc-cn, euccn, eucgb2312-cn, gb2312-1980, gb2312-80, iso-ir-58 | 简体中文 |
| gbk | 936, cp936, ms936 | 统一汉语 |
| gb18030 | gb18030-2000 | 统一汉语 |
| hz | hzgb, hz-gb, hz-gb-2312 | 简体中文 |
| iso2022_jp | csiso2022jp, iso2022jp, iso-2022-jp | 日语 |
| iso2022_jp_1 | iso2022jp-1, iso-2022-jp-1 | 日语 |
| iso2022_jp_2 | iso2022jp-2, iso-2022-jp-2 | 日语,韩语,简体中文,西欧,希腊语 |
| iso2022_jp_2004 | iso2022jp-2004, iso-2022-jp-2004 | 日语 |
| iso2022_jp_3 | iso2022jp-3, iso-2022-jp-3 | 日语 |
| iso2022_jp_ext | iso2022jp-ext, iso-2022-jp-ext | 日语 |
| iso2022_kr | csiso2022kr, iso2022kr, iso-2022-kr | 韩语 |
| latin_1 | iso-8859-1, iso8859-1, 8859, cp819, latin, latin1, L1 | 西欧 |
| iso8859_2 | iso-8859-2, latin2, L2 | 中欧和东欧 |
| iso8859_3 | iso-8859-3, latin3, L3 | 世界语,马耳他语 |
| iso8859_4 | iso-8859-4, latin4, L4 | 波罗的海语言 |
| iso8859_5 | iso-8859-5, cyrillic | 保加利亚语,白俄罗斯语,马其顿语,俄语,塞尔维亚语 |
| iso8859_6 | iso-8859-6, arabic | 阿拉伯语 |
| iso8859_7 | iso-8859-7, greek, greek8 | 希腊语 |
| iso8859_8 | iso-8859-8, hebrew | 希伯来语 |
| iso8859_9 | iso-8859-9, latin5, L5 | 土耳其语 |
| iso8859_10 | iso-8859-10, latin6, L6 | 北欧语言 |
| iso8859_11 | iso-8859-11, thai | 泰语 |
| iso8859_13 | iso-8859-13, latin7, L7 | 波罗的海语言 |
| iso8859_14 | iso-8859-14, latin8, L8 | 凯尔特语 |
| iso8859_15 | iso-8859-15, latin9, L9 | 西欧 |
| iso8859_16 | iso-8859-16, latin10, L10 | 东南欧 |
| johab | cp1361, ms1361 | 韩语 |
| koi8_r | 俄语 | |
| koi8_t | 塔吉克3.5 新版功能. | |
| koi8_u | 乌克兰语 | |
| kz1048 | kz_1048, strk1048_2002, rk1048 | 哈萨克语3.5 新版功能. |
| mac_cyrillic | maccyrillic | 保加利亚语,白俄罗斯语,马其顿语,俄语,塞尔维亚语 |
| mac_greek | macgreek | 希腊语 |
| mac_iceland | maciceland | 冰岛语 |
| mac_latin2 | maclatin2, maccentraleurope, mac_centeuro | 中欧和东欧 |
| mac_roman | macroman, macintosh | 西欧 |
| mac_turkish | macturkish | 土耳其语 |
| ptcp154 | csptcp154, pt154, cp154, cyrillic-asian | 哈萨克语 |
| shift_jis | csshiftjis, shiftjis, sjis, s_jis | 日语 |
| shift_jis_2004 | shiftjis2004, sjis_2004, sjis2004 | 日语 |
| shift_jisx0213 | shiftjisx0213, sjisx0213, s_jisx0213 | 日语 |
| utf_32 | U32, utf32 | 所有语言 |
| utf_32_be | UTF-32BE | 所有语言 |
| utf_32_le | UTF-32LE | 所有语言 |
| utf_16 | U16, utf16 | 所有语言 |
| utf_16_be | UTF-16BE | 所有语言 |
| utf_16_le | UTF-16LE | 所有语言 |
| utf_7 | U7, unicode-1-1-utf-7 | 所有语言 |
| utf_8 | U8, UTF, utf8, cp65001 | 所有语言 |
| utf_8_sig | 所有语言 |
Python源文件的编码的更多相关文章
- [译]如何定义python源文件的文件编码
简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...
- Python常见字符编码间的转换
主要内容: 1.Unicode 和 UTF-8的爱恨纠葛 2.字符在硬盘上的存储 3.编码的转换 4.验证编码是否转换正确 5.Python bytes类型 前 ...
- python 3字符编码
python 3字符编码 官方链接:http://legacy.python.org/dev/peps/pep-0263/ 在Python2中默认是ascii编码,Python3是utf-8编码 在p ...
- 转:Python常见字符编码及其之间的转换
参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...
- python中的编码问题:以ascii和unicode为主线
1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8 ...
- python中的编码声明
python中的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python 相当于写死了 python 路径(是告诉OS执行这个py时,调 ...
- python大法好——编码.文件
1.编码 python3 中使用utf-8作为默认编码. UTF-8对Unicode进行转化,为解决存储和网络传输问题. UTF是为Unicode编码设计的一种在存储和传输节省空间的编码方案. Uni ...
- 【转】【Python】 python中的编码问题报错 'ascii' codec can't decode 及 URL地址获取中文
1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8是u ...
- python运行显示编码错误
python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...
- 将python源文件打包成exe文件
pyinstaller 库的使用PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Pyt ...
随机推荐
- perl匹配特殊写法
my $name='4'; #找匹配4 for($name) { if(/^4$/) { print "success\n"; } else { print "faile ...
- Go语言书籍推荐
附录: 其他书籍的介绍:https://github.com/golang/go/wiki/Books Go程序设计语言 (圣经) 作者 艾伦 A.A.多诺万 Kernighan 下载地址 中文版PD ...
- JavaScript代码是怎么在浏览器里面运行起来的?
JavaScript代码是怎么在浏览器里面运行的?下面简单探索一下 浏览器内核 浏览器内核(Rendering Engine),常见的叫法如:排版引擎.解释引擎.渲染引擎,现在流行称为浏览器内核. 浏 ...
- PGL图学习之图神经网络GraphSAGE、GIN图采样算法[系列七]
0. PGL图学习之图神经网络GraphSAGE.GIN图采样算法[系列七] 本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/50619 ...
- 【RocketMQ】顺序消息实现原理
全局有序 在RocketMQ中,如果使消息全局有序,可以为Topic设置一个消息队列,使用一个生产者单线程发送数据,消费者端也使用单线程进行消费,从而保证消息的全局有序,但是这种方式效率低,一般不使用 ...
- (GCC) C++代码中使用#pragma GCC optimize / #pragma G++ optimize
科学计算用优化 经过实验证明这个命令优化效果最好,把我的 1.2S 的 FFT 优化到了 0.4S使用 pragma 命令优化程序: #pragma GCC optimize("Ofast, ...
- HDC2022的无障碍参会体验,手语服务是如何做到的?
华为开发者大会2022(HDC)上,HMS Core手语数字人以全新形象亮相,并在直播中完成了长达3个多小时的实时手语翻译,向线上线下超过一千万的观众提供了专业.实时.准确的手语翻译服务,为听障人士提 ...
- 8.一个项目实战(下载CSDN博客文章)
专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...
- Day29 Linux相关命令的使用
今日内容 基本概念 安装 基本命令 在linux上安装软件 jdk mysql jdk Nginx的安装 一.概述 1.Unix linux基于Unix,Unix由贝尔实验室在1969年开发 一开始由 ...
- org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying
1.报错信息 org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: org.post ...