Python2-3字符集编码一次性解决

本文详细介绍了Python2和Python3中字符集编码的问题,包括ASCII、ISO-8859、GB2312、GBK、GB18030、cp936、Unicode和UTF-8等编码格式。并讲解了终端编码、Python中的编码问题,如python2和python3的处理方式、解码和编码方法,以及如何解决打印乱码的常规办法。同时提到了Chardet库用于检测文件编码和中文iso8859-1转utf8编码的实践。
摘要由CSDN通过智能技术生成

**—
title: Python字符集编码
copyright: true
top: 0
date: 2018-10-14 10:47:41
tags: 编码
categories: Python进阶笔记
permalink:
password:
keywords:
description: py2与py3的字符编码问题一次性解决

他盯着覆盖了龙眼的那层坚硬的瞬膜,想到那对在黑暗里缓缓睁开的黄金瞳,仿佛世界之门在他的眼前开启。

编码简介

ASCII

字母A是65,c是99,~是126等等, ASCII码就这样诞生了。原始的ASCII标准定义了从0到127 的字符,这样正好能用127个字节表示。

ISO-8859

ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

GB2312

为了满足中文,中国人定制了GB2312,兼容ASCII

GBK

为了满足了更多的中文,GBK诞生,GBK:2Bytes代表一个字符;为了满足其他国家,各个国家纷纷定制了自己的编码。日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,兼容ASCII,gb2312

GB18030

为了再满足少数民族的文字,GB18030编码覆盖中、日、朝鲜、少数民族文字,采用单字节、双字节、四字节三种字符编码,维文即使中过少数名字文字又是四字节编码,gb18030没理由不支持转码,经测试发现假设正确。

cp936

微软的CP936通常被视为等同GBK,连 IANA 也以“CP936”为“GBK”之别名。事实上比较起来, GBK 定义之字符较 CP936 多出95字(15个非汉字及80个汉字)。

万国码Unicode

有人开始觉得太多编码导致世界变得过于复杂了,让人脑袋疼,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。

Unicode统一用2Bytes代表一个字符,2**16-1=65535,可代表6万多个字符,因而兼容万国语言.

UTF-8

Unicode编码对于通篇都是英文的文本来说,这种编码方式无疑是多了一倍的存储空间(英文字母只需要一个字节就足够,用两个字节来表示,无疑是浪费空间)。于是产生了UTF-8:

UTF-8:对英文字符只用1Bytes表示,对中文字符用3Bytes

在UTF-8中,0-127号的字符用1个字节来表示,使用和US-ASCII相同的编码。这意味着1980年代写的文档用UTF-8打开一点问题都没有。只有128号及以上的字符才用2个,3个或者4个字节来表示。因此,UTF-8被称作可变长度编码。

总结

unicode:简单粗暴,所有字符都是2Bytes,优点是字符----->数字的转换速度快,缺点是占用空间大。

utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示。

因此,内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快);硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大与utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性。而把数据存放到硬盘,或者网络传输,都需要把unicode转成utf-8,因为数据的传输,追求的是稳定,高效,数据量越小数据传输就越靠谱,于是都转成utf-8格式的,而不是unicod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子燕青啦啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值