17) 编码

18) Python3的执行过程

19) 常见编码错误原因

20) 后附一部分编码详细信息(个人总结,有误望指正)

想了解Python3的编码更细致的讲解请参考大王的文章

http://www.cnblogs.com/alex3714/articles/7550940.html

17,编码

Python2默认的文件编码是,ASCII

所以默认是不支持中文,若想支持中文,要在文件顶行写上

      #! -*- coding: utf-8 -*-

      #! encoding: utf-8

Python3默认的文件编码是,UTF-8

Windows中文版默认编码是,GBK

Linux / Mac OS默认编码是,UTF-8

18,Python3 的执行过程

1,解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成Unicode

       (可以把源文件看成一个很长的字符串)

2,把代码字符串按照语法规则进行语法分析

3,所有的变量字符都会以Unicode编码声明

Note

Python3源文件默认文件编码UTF-8

Python3解释器默认编码Unicode

Python2源文件默认文件编码ASCII

Python2解释器默认编码ASCII

在Python3中如果不使用默认编码,记得一定要在文件头声明;在PyCharm改没用

python3中:默认文件编码为UTF-8

加载到内存后成了Unicode

(其实不管声明文件编码为什么,到内存中都会转成Unicode,仅限Python3)

在Windows终端下执行,正常显示

虽然Windows CMD的编码是GBK,

但是Unicode的作用其中之一是有跟全球所有国家语言编码的映射关系

python2中:默认文件编码为ascii

加载到内存后还是ascii,

就算你声明了编码是utf-8,到内存后依然是utf-8,

(声明什么,内存中就是什么) 所以,

在Windows终端下执行,显示不正常

因为Windows CMD的编码是GBK,

GBK处理不了utf-8的编码

只有两种途径才能正常显示:

1,文件头声明编码为gbk

2,字符串显示地转成Unicode

19,常见编码错误的原因:

Python解释器的默认编码

Python源文件的文件编码

Terminal使用的编码

操作系统的语言设置

07 Python编码问题的更多相关文章

  1. 【转】Python——编码规范

    来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet M ...

  2. (转载) 浅谈python编码处理

    最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...

  3. Python 编码简单说

    先说说什么是编码. 编码(encoding)就是把一个字符映射到计算机底层使用的二进制码.编码方案(encoding scheme)规定了字符串是如何编码的. python编码,其实就是对python ...

  4. Python之路3【知识点】白话Python编码和文件操作

    Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...

  5. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

  6. 【转】python编码的问题

    摘要: 为了在源代码中支持非ASCII字符,必须在源文件的第一行或者第二行显示地指定编码格式: # coding=utf-8 或者是: #!/usr/bin/python # -*- coding: ...

  7. 【转】python编码规范

    http://blog.csdn.net/willhuo/article/details/49300441 决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是 ...

  8. python 编码 UnicodeDecodeError

    将一个py脚本从Centos转到win运行,出错如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: il ...

  9. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

随机推荐

  1. POJ1259 The Picnic 最大空凸包问题 DP

    POJ1259 给定平面上100个点 求一个最大的凸包,使得它不包含其中任意点,且凸包的顶点是题目所给的点. 枚举凸包左下角的点,顺时针枚举第二个点, 用opt[i][j]记录 i作为第二个点, 且第 ...

  2. 洛谷 P1966 火柴排队 —— 思路

    题目:https://www.luogu.org/problemnew/show/P1966 首先,一个排列相邻交换变成另一个排列的交换次数就是逆序对数: 随便画一画,感觉应该是排个序,大的对应大的, ...

  3. bzoj1085 [SCOI2005]骑士精神——IDA*

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 搜索,IDA*,估价就是最少需要跳的步数: 代码意外地挺好写的,memcmp 用起来好 ...

  4. java笔记线程方式1睡眠

    public class ThreadSleepDemo { public static void main(String[] args) { ThreadSleep ts1 = new Thread ...

  5. sql server 大数据处理

    对SQL Server数据表进行分区的过程分为三个步骤: 1)建立分区函数 2)建立分区方案 3)对表格进行分区 第一个步骤:建立分区函数 分区函数定义[u]how[/u],即你想要SQL Serve ...

  6. 【题解】TES-Intelligence Test

    [题解]\(TES-Intelligence\) \(Test\) 逼自己每天一道模拟题 传送:\(TES-Intelligence\) \(Test\) \([POI2010]\) \([P3500 ...

  7. 洛谷P5398 [Ynoi2018]GOSICK(二次离线莫队)

    题面 传送门 题解 维包一生推 首先请确保您会二次离线莫队 那么我们现在的问题就是怎么转移了,对于\(i\)和前缀\([1,r]\)的贡献,我们拆成\(b_i\)和\(c_i\)两部分,其中\(b_i ...

  8. 用SpringMVC实现的上传下载

    1.导入相关jar包 commons-fileupload.jar commons-io.jar 2.配置web.xml文件 <?xml version="1.0" enco ...

  9. js操作元素透明度以及浏览器兼容性

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. APP上线被APPStore拒绝的各种原因

    1.程序有重大bug,程序不能启动,或者中途退出.2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币.3.游戏里有实物奖励的话,一定要说清楚,奖励由本公司负责,和苹果没有关系.4.用到苹果的标志 ...