Python中文件编码的检测

作者: 我爱学python | 来源:发表于2019-07-13 17:29 被阅读16次

前言:

文件打开的原则是“ 以什么编码格式保存的,就以什么编码格式打开 ”,我们常见的文件一般是以“ utf-8 ”或“ GBK ”编码进行保存的,由于编辑器一般设置了默认的保存和打开方式,所以我们在记事本或常见文档编辑器如Word中不容易看到乱码的情况发生,但是,当我们要在内存里读取打开一个文件时,如果文档编码方式和计算机内存默认读取文件的编码不同,或者我们打开文件时未设置正确的编码打开规则,则很有可能出现一堆乱码,无法正常读取文件内容,影响接下来的工作。

其实,这些情况早就有大佬想到了,所以开发了一个类似机器学习的第三方Python包 ,名为“ chardet ”,通过分析文件的内容,来推断文档的编码格式,然后返回一个报告,提示我们检测的文档最有可能的编码格式和语言。今天我们一起来学习一下,这个很有意思的小技巧。

一、文件打开模式

这里介绍一下待会涉及到的文件打开方式,一个是 “ r ” ,即只读模式,只对文档进行读取,不作修改;另一种是 “ rb ” ,即二进制模式,读取的文档以二进制字符串表示(一般文档、图片和视音频等文件为了便于储存、传输的需要,在硬盘上以二进制字符串的形式存在),更直观的说,就是把文件原封不动的从硬盘里读出来,不进行解码,难以阅读。

二、文件打开方法

  文件打开一般会遇到以下两种情况

 1、已知文件保存的编码格式,则读取时,指定对应的编码格式即可正常读取。

首先我们先新建一个文档,命名为 “ word1.txt ”,以“ utf-8 ”编码格式保存,内容如下:

你好,明天!

  文件打开一般方法如下:

f = open(file="filename",mode="r",encoding="utf-8")#文件名最好带后缀,编码格式按已知的文件编码填,此处以 utf-8 为例

实例如下:已知一个文件是以 utf-8 编码的,则打开时的编码也是 utf-8

2、文件保存时的编码格式未知,打开时无法设置编码方式,使得读取乱码。此时的解决方法有两种:

(1)一种是不去理会文件的编码格式,只交给计算机读取,保存和传输(不用给人看),以二进制模式打开,即 mode设为 “ rb ”即可,方法如下:

(2)另一种则是今天的主角,通过Python第三方包(chardet)帮助我们检测文件的编码格式,然后再按正常模式读取文件,方法如下:

  首先确保已经安装 “chardet”包,若没有安装,安装方法如下(已配置Python环境的情况下,在命令行cmd中输入以下内容):

pip3 install chardet  # Python2里换成pip

注意,由于在测试时发现,文件内容过少时,检测结果有较大偏差(word1.txt识别为“ IBM855 ”),所以这里我重新新建一个测试文件 “word2.txt”,保存时的编码格式为“ utf-8 ”(假设此文件编码格式未知),文件内容如下:

测试代码如下:

检测结果详解:

此时,我们就可以按照检测得到的结果,按照已知文件编码格式的情况,查看文件内容即可。

相关文章

  • python检测文件编码问题

    最近处理一堆txt文件时,各种编码错误,意识到主要是文件的编码格式不统一造成的原因。使用chardet进行检测: ...

  • Python中文件编码的检测

    前言: 文件打开的原则是“以什么编码格式保存的,就以什么编码格式打开”,我们常见的文件一般是以“ utf-8 ”或...

  • python 高级方法

    Python的字符串类型 字符编码方法 查看Python中的字符串编码名称,查看系统的编码 源文件字符集编码声明:...

  • Python——文件编码

    编码的演变 Python编码 python2 Python指定编码 在文件头部增加 -*-coding:utf8-...

  • python批量查看修改文件编码

    使用python批量查看文件编码,或者批量修改文件编码 代码 结果 查看文件编码 执行编码转换 再次查看转换后的编码

  • 文本文件的编码格式

    文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等 Python ...

  • 初学python-基础语法

    中文编码 Python中默认的编码格式是 ASCII 格式 有汉字的code在文件开头加入# -*- coding...

  • Python编码问题整理纪录

    在开发Python程序的过程中,会涉及到三个方面的编码: 1、Python程序文件的编码 2、Pyth...

  • Python基础之文件处理(二)

    Python基础文件处理 python系列文档都是基于python3 一、字符编码 在python2默认编码是AS...

  • 使用python将GBK编码文档转化为UTF编码

    使用python将GBK编码文档转化为UTF编码 使用python将GBK编码文档转化为UTF编码文件操作说明(p...

网友评论

    本文标题:Python中文件编码的检测

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