美文网首页程序员
python编码问题

python编码问题

作者: PassionateLee | 来源:发表于2018-12-05 16:00 被阅读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。

关于unicode的详细介绍以及编码的演变可以点击下面的链接:

编码演变历史

相关文章

  • python 编码问题总结记录

    Python2的默认编码ASCII,这是python编码问题的根本原因,可以想象,python3的编码问题肯定没有...

  • Python优秀博客笔记汇总(持续更新)

    还在烦编码问题? Python 编码错误的本质原因 Python 编码为什么那么蛋疼? Python3 是如何解决...

  • learning

    python在终端进行文件的运行在终端输入 python test.py 时间时间的转换 编码python编码问题

  • Python程序的中文在cmd中乱码问题

    刚开始学python遇到的问题,编码的问题。程序编码是UTF-8,cmd默认是GBK编码

  • 学习资料

    简明python教程Python2字符编码问题小结stackoverflow about python

  • 【python报错】UnicodeDecodeError: &#

    一、问题 二、原因 编码问题:整个Python文件的编码以及文件读取的编码 三、解决方案 1、编码设置 第一行没有...

  • python 编码问题

    以前python2.x版本的编码问题较多,所以这里只针对python3.x版本的问题进行讨论。 Unicode 编...

  • python编码问题

    1. python2中关于utf-8编码问题解决方法: 或者开头加# -*- coding: utf-8 -*-但...

  • Python编码问题

    默认编码 字符串 python2 文本字符串默认编码是ASCII,中文默认UTF-8python3 文本字符串默认...

  • python 编码问题

    1、一些概念 比特 / bit:计算机中最小的数据单位,是单个的二进制数值 0 或 1 字节 / byte:计算机...

网友评论

    本文标题:python编码问题

    本文链接:https://www.haomeiwen.com/subject/chtwcqtx.html