内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

python的编码问题

2018-12-05 21:54 出处:清屏网 人气: 评论(0

为什么想讲这个问题?主要是最近自己遇到这个问题,然后就是把自己看到的一起交流一下。

记得我们在读取文件内容的时候,老是会涉及到编码解码的问题,特别是有的文件内容常用的编码还不支持,这就令人非常的烦。下面列出一行常用的读取文件内容代码。

with open('a.txt','r',encoding='utf-8') as pp:

这里面主要是三个参数,第一个是文件名,第二个是只读的方式打开文件,第三个是编码解码格式,为什么我要说是编码解码格式呢?先来普及一下基本的知识。

字节和字符;字符是人类所能识别的基础单元,比如英文单词‘love’,这个单词是由四个字母组成,四个字母中每个字母都代表我们能识别的字符单元,同理中文‘你好’,你和好分别代表2个字符单元。字符大致就可以这样简单的理解;那么字节呢?我们都知道计算机中所能识别的都是二进制位,也就是0-1串,一个字节就代表8位二进制位。

字节和字符又是怎么联系到一起呢?简单的说就是怎么把人类语言转变成计算机能读懂的语言,编码这个时候就应运而生了,编码方式的差异决定多少字节代表一个字符,比如以前常见的ASCII就是一个字节对应一个字符,相当于我制定了一个规则,然后你按照这个规则将文字(字符)转换成计算机能理解的东西(字节)。解码呢?就是编码的逆过程,用相应编码的规则将计算机内的东西(字节)转换成人类理解的东西(文字).

编码:字符到字节的转换

解码:字节到字符的转换

把这两个过程运用到文件的读取中更好理解。计算机读取文本和写入文本的方式是字节流,读取文件的时候,把字节流转换成字符,实际上就是解码过程,同时,将字符写到文件中去,实际上就是编码过程。

有的人可能说,我怎么记得python中读取文件的时候,解码后的字符都是unicode编码,这又是怎么回事?我查了下别人说的优势,有以下三点:

1.可以处理非英文内容

2.可以使用第三方库

3.接收任何的输入内容

相当于字节流解码变成unicode编码的字符,unicode字符作为python内部处理通用字符,最后编码变成其他字符。

顺便提一句,前面的with方法中无论读取还是写入,都是encoding变量后面填参数,读取对应就是解码方式,写入对应编码方式,python3默认编码方式是utf-8。

分享给小伙伴们:
本文标签: 编码python

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号