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源文件的编码的更多相关文章

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

    简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...

  2. Python常见字符编码间的转换

    主要内容:     1.Unicode 和 UTF-8的爱恨纠葛     2.字符在硬盘上的存储     3.编码的转换     4.验证编码是否转换正确     5.Python bytes类型 前 ...

  3. python 3字符编码

    python 3字符编码 官方链接:http://legacy.python.org/dev/peps/pep-0263/ 在Python2中默认是ascii编码,Python3是utf-8编码 在p ...

  4. 转:Python常见字符编码及其之间的转换

    参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...

  5. python中的编码问题:以ascii和unicode为主线

      1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8 ...

  6. python中的编码声明

    python中的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python 相当于写死了 python 路径(是告诉OS执行这个py时,调 ...

  7. python大法好——编码.文件

    1.编码 python3 中使用utf-8作为默认编码. UTF-8对Unicode进行转化,为解决存储和网络传输问题. UTF是为Unicode编码设计的一种在存储和传输节省空间的编码方案. Uni ...

  8. 【转】【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 ...

  9. python运行显示编码错误

    python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...

  10. 将python源文件打包成exe文件

    pyinstaller 库的使用PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Pyt ...

随机推荐

  1. 前端常见loading动画

    loading动画是前端页面加载时必不可少的元素,好看合适的加载动画会极大的提升用户体验与系统的交互效果.下面为大家提供几种简单的加载动画效果,如果帮助到你了请点赞评论. 1.无限循环的圆圈 < ...

  2. 【笔记】CF1607F Robot on the Board 2 及相关

    题目传送门 记忆化搜索 首先,这题 \(10000\) 组 \(2000\times 2000\) 的数据直接爆搜肯定会超时.想到,如果一个点的答案已经被更新过,之后走到这个点能再多走的点也就确定了, ...

  3. 2022春每日一题:Day 41

    题目:I Hate It 一个基础的线段树模板,单点修改+区间查询 代码: #include <cstdio> #include <cstdlib> #include < ...

  4. Go语言核心36讲15---结构体

    我们都知道,结构体类型表示的是实实在在的数据结构.一个结构体类型可以包含若干个字段,每个字段通常都需要有确切的名字和类型. 前导内容:结构体类型基础知识 当然了,结构体类型也可以不包含任何字段,这样并 ...

  5. vcenter密码设置永不过期

    由于机房断电,原本的vcenter重启后web页面出现报错,为尽快恢复vcenter管理机,直接停用了旧的vcenter虚机,重新安装了一台vcenter,两个月后,页面开始报警密码即将到期: 经查阅 ...

  6. 【云原生 · Kubernetes】Kubernetes Node的隔离与恢复

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying Kubernetes Node的隔离与恢复 在硬件升级.硬件维护等情况下,我们需要将某些No ...

  7. 【每日一题】【第一个出现的值】【二分】2022年1月10日-NC105 二分查找-II

    描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返 ...

  8. docker入门(利用docker部署web应用)

    第一章 什么是docker1.1 docker的发展史2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombina ...

  9. 使用selenium爬取淘宝

    一.出现的问题 前段时间在使用selenium对淘宝进行模拟登陆的时候,输入完正好和密码,然后验证码无论如何都不能划过去.找了好久,原来是因为selenium在浏览器中运        行的时候会暴露 ...

  10. ZooKeeper 3.6.X 配置参考

    "好记性不如烂笔头." -- 张溥 0x00 大纲 目录 0x00 大纲 0x01 前言 0x02 独立运行 0x03 集群运行 0x04 单机集群配置补充 0x05 官方原文 S ...