day_08 字符编码乱码处理
Python3默认编码是unicode;而Python2是ASCII码。Windows环境默认是gbk编码。
常见编码错误原因:
1. Python解释器的默认编码
2. Python源文件文件编码
3. Terminal使用的编码
4. 操作系统的语言设置
一、 编码的种类
I、ASCII 占1个字节,只支持英文
II、GB2312 占2个字节,支持6700+汉字
III、GBK GB2312的升级版,支持21000+汉字,中文2个字节。
IV、Unicode 2-4字节 已经收录136690个字符
V、UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字
节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个。中文3个字节。
VI、UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
二、 Python3的执行过程
1.解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
2.把代码字符串按照语法规则进行解释,
3.所有的变量字符都会以unicode编码声明
Py3 自动把文件编码转为unicode,Python2并不会自动的把文件编码转为unicode存在内存里。需要手动转码。
三、手动转码规则
UTF-8 --> decode 解码 --> Unicode
Unicode --> encode 编码 --> GBK / UTF-8 等
使用type可以查看编码形式,unicode是‘unicode’,gbk和utf-8是‘str或bytes’。
实例:
Python2中默认是ASCII码
#coding=utf-8 #Python2中默认是ASCII码,一般会加入以utf-8编程 a = '编码' # a是utf-8类型 b = a.decode('utf-8') # b是Unicode类型 c = b.encode('gbk') #c是gbk类型 d = c.decode('gbk').encode('utf-8') #先将c转换成Unicode,再转成utf-8 print a ,b,c,d print(a ,b,c,d) # 注意:使用Python2解释器不能加括号,否者转换成了二进制 print type(a),type(b),type(c),type(d) ''' 注意:在pycharm里使用Python2时,通常需要以unicode作为中间编码,即先将其他编码 的字符解码(decode)成unicode,再从unicode编码(encode)成另一种编码,这里在从Unicode编 码(encode)成gbk编码时,终端显示会出现乱码,只能在window命令行启动Python2解释器 才能正常显示该字符。 '''''' 编码 编码 ���� 编码 ('\xe7\xbc\x96\xe7\xa0\x81', u'\u7f16\u7801', '\xb1\xe0\xc2\xeb', '\xe7\xbc\x96\xe7\xa0\x81') <type 'str'> <type 'unicode'> <type 'str'> <type 'str'> '''
python3中默认是Unicode
a = '编码' # a是unicode类型 b = a.encode('utf-8') # b是utf-8类型 c = a.encode('gbk') #c是gbk类型 print (a ,b,c) print (type(a),type(b),type(c)) #python3默认是unicode类型''' 编码 b'\xe7\xbc\x96\xe7\xa0\x81' b'\xb1\xe0\xc2\xeb' <class 'str'> <class 'bytes'> <class 'bytes'> '''
在windows cmd窗口下启动Python2 默认gbk
>>> a = '编码' >>> b = a.decode('gbk') #windows默认是gbk,先解码成unicode >>> c = b.encode('utf-8') #unicode转换成utf-8 >>> a '\xb1\xe0\xc2\xeb' >>> b u'\u7f16\u7801' >>> c '\xe7\xbc\x96\xe7\xa0\x81' >>> print(a,b,c) ('\xb1\xe0\xc2\xeb', u'\u7f16\u7801', '\xe7\xbc\x96\xe7\xa0\x81') >>> type(a) <type 'str'> >>> type(b) <type 'unicode'> >>> type(c) <type 'str'>
Python中decode与encode的区别
转载于:https://www.cnblogs.com/zhangchaocoming/p/11538137.html
day_08 字符编码乱码处理相关推荐
- Source Insight乱码的解决方案,SI不支持UTF-8字符编码乱码
最近使用source insight查看一些开源代码,显示中文就乱码,据说是因为source insight不支持utf-8编码,默认编码方式为ANSI码.所以需要将utf-8等非ANSI码的文件转换 ...
- idea console中文乱码_Python3的字符编码乱码问题解决思路
在乱码问题上,Python3相比Python2已经好多了,但在处理外来字符时比如文件或者网站时还是会出现乱码问题. 乱码的原因很多,一个是来源的字符编码在接收时处理不当,编程语言默认的UTF8处理gb ...
- python3 设置默认编码_Python3的字符编码乱码问题解决思路
在乱码问题上,Python3相比Python2已经好多了,但在处理外来字符时比如文件或者网站时还是会出现乱码问题. 乱码的原因很多,一个是来源的字符编码在接收时处理不当,编程语言默认的UTF8处理gb ...
- 字符编码乱码问题(servlet底层 编码大揭秘)
好多初学者会遇到,请求过去的信息内包含中文(一般会是get方式提交过去的请求会出现).好郁闷,这是为什么呢.有下面分析下,说的不好可以吐槽 话说我们能遇到这种编码的问题,归根结底就是这 这 web开 ...
- \xe4\xb8\xad\xe6\x96\x87 phython 字符编码乱码问题
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成"\xe4\xb8\xad\xe6\x96\x87"的形式? 为什么会报错"UnicodeEn ...
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...
- 前端网页、php与mysql数据库字符编码(解决中文等乱码问题
web开发中经常涉及前端网页--php--mysql之间的数据交互,当数据只有英文时通常不会有什么问题,但一旦涉及中文,三个地方的某一处字符编码不一致(如,网页使用的时gbk而mysql使用utf-8 ...
- wamp php字符编码,关于Apache默认编码错误 导致网站乱码的解决方案
最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站程序编码UTF-8编码安装成功,运行成功. B网站程序编gb2312也要安装在同一服务器上. 这样就出现问题了,Apache默 ...
- PLSQL Developer 插入中文 乱码问题,如图 这个是由于oracle服务器端字符编码 和 Oracle 客户端 字符编码不一致引起的。 检查Oracle服务器端字符编码,用 sel
PLSQL Developer 插入中文 乱码问题,如图 这个是由于oracle服务器端字符编码 和 Oracle 客户端 字符编码不一致引起的. 检查Oracle服务器端字符编码,用 select ...
最新文章
- 01--MySQL自学教程:数据库MySQL安装和校验
- 实现一个不能被继承的类
- thinkphp 5 stdClass Call to undefined
- 使用git上传代码到github远程仓库
- vaadin教程_Vaadin教程
- MySQL Workbench运行脚本
- web漏洞扫描工具_如何使用Arachni扫描web漏洞
- Xcode启动RN报错“`fsevents` unavailable“
- Python的Cython在Windows环境下的部署安装
- 【转】C#操作sqlServer数据库
- 通过pcm音频数据计算分贝
- 计算机cpu的介绍,CPU的详细介绍
- 基于C#的ico图标制作与应用
- 我的奋斗,不需要任何理由
- 农村土地确权之调查公示 —— ArcGIS中地块分布图标注设置说明[地块分布图制作]
- iPhoneX 适配笔记
- 【Python 22】52周存钱挑战2.0(列表list和math函数)
- NO_ACCESS Protection
- 企业网盘到底应该怎么选?
- 【创作赢红包】如何提高写作水平?让写作成为你的强项。
热门文章
- 英国访问学者如何获取邀请函?
- tf.split()函数(非常清晰简单的解释)
- day1.python变量和数据类型的介绍教程图灵python大海老师
- 才发现,原来女朋友洗澡这么可爱噢
- python中math计算平方根的函数_Python中利用sqrt()方法进行平方根计算的教程
- Python学习日记(二十八) hashlib模块、configparse模块、logging模块
- 深入理解UIBezierPath画圆弧addArcWithCenter
- 实验9-10 平面向量加法(15分)
- 软件设计师考点四之计算机网络及信息安全
- 做个计算器--生成注册码