07 Python编码问题
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编码问题的更多相关文章
- 【转】Python——编码规范
来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet M ...
- (转载) 浅谈python编码处理
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- Python 编码简单说
先说说什么是编码. 编码(encoding)就是把一个字符映射到计算机底层使用的二进制码.编码方案(encoding scheme)规定了字符串是如何编码的. python编码,其实就是对python ...
- Python之路3【知识点】白话Python编码和文件操作
Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
- 【转】python编码的问题
摘要: 为了在源代码中支持非ASCII字符,必须在源文件的第一行或者第二行显示地指定编码格式: # coding=utf-8 或者是: #!/usr/bin/python # -*- coding: ...
- 【转】python编码规范
http://blog.csdn.net/willhuo/article/details/49300441 决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是 ...
- python 编码 UnicodeDecodeError
将一个py脚本从Centos转到win运行,出错如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: il ...
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
随机推荐
- 【168】ENVI入门系列
参考:ENVI-IDL中国的博客 [ENVI入门系列]01.ENVI产品简介与入门 [ENVI入门系列]02.自定义坐标系(北京54.西安80.2000坐标系) [ENVI入门系列]03.基于自带定位 ...
- http-2.4
http-2.4 1)新特性 (1)MPM 支持运行为DSO 机制:以模块形式按需加载 (2)event MPM 生产环境可用 (3)异步读写机制 (4)支持每模块及每目录的单独日志级别定义 (5)每 ...
- RabbitMQ学习之Work Queues(2)
目录: 轮询调度(Round-robin dispatching):即依次分配分配任务给worker. 消息答复(Message acknowledgement):在consumer处理完之后,进行消 ...
- 在Chrome与火狐中,输入框input类型为number时,如何去除掉的自带的上下默认箭头
如何移除input='number'时浏览器自带的上下箭头: CSS样式: /* 去除input[type=number]浏览器默认的icon显示 */ input::-webkit-outer-sp ...
- npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'
问题如下图: 解决办法: 在开始菜单栏里打开cmd的时,右击选择“以管理员身份运行”.然后再在打开的cmd里运动install就没问题了. 这个问题应该是当时安装依赖时,我们是以管理员身份运行的:所以 ...
- [转]c++中的string常用函数用法总结
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为 ...
- [转]C语言文件操作函数大全(超详细)
fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const cha ...
- linux学习之路6 Vi文本编辑器
vim是vi的增强版本 vim拥有三种模式: 命令模式(常规模式) vim启动后,默认进入命令模式.任何模式都可以通过按esc键回到命令模式(可以多按几次.命令模式可以通过键入不同的命令完成选择.复制 ...
- oracle多语言环境下to_date时间转换问题
现象:在多语言环境下使用过oracle的同学想必都遇到过这样一个问题, date_v date; date_v := to_date('2010/11/16');--或'2010/11/16' 同一个 ...
- java 对readLine扩展添加行号样式
java 的流的使用中,在字符缓冲输入流中,有一个每次读取一行数据的方法:readLine(): 在这里使用简单的继承方法对其继续扩展,使得返回每行前面添加序号 //需要导入的一些包 import j ...