Python | 多种编码文件(中文)乱码问题解决

笔者最近在测试Python GUI编程,尝试在界面程序显示文本文件或Python脚本(文件都包含中文)。然而由于两种文件编码不同,一开始在代码处理过程顾此失彼,中文部分常以乱码显示。最后终于寻得解决方法。

问题线索

  • 01

    可以知道的是,文本文件的默认编码并不是utf8。 我们打开一个文本文件,并点击另存为

  • 02

    我们在新窗口的编码一栏看到默认编码是ANSI。先不管这个编码是什么编码,但是通过下拉列表我们知道,这种编码不是utf8。

编码测试

  • 01

    对于Python里面的中文显示,我们常常使用utf8和gbk的编码。对于这两种编码笔者就不介绍了,总之都是专门可以处理中文的编码方式啦。

  • 02

    我们首先对文本文件测试了gbk解码。我们发现,此编码下文本文件内容可以正常显示,但是使用utf8解码,程序出错,抛出decodeError异常

  • 03

    同样的,我们对Python脚本文件测试了utf8解码。我们发现,此编码下文本文件内容可以正常显示,但是使用gbk解码,中文部分出现乱码

  • 04

    测试说明,对于文本文件需要使用gbk解码,而对于脚本文件需要utf8解码,也就是说,文本文件是gbk编码的,而脚本则是utf8

解决法一:异常处理

  • 01

    我们从上面的编码测试发现,文本文件在使用utf8解码时会抛出异常,所以我们在代码中可以做如下处理——也就是在异常抛出时采用gbk解码

  • 02

    经过测试,发现程序可以满足两种文件正常显示

    解决法二:文件类型

    • 01

      因为确定是这两种文件,所以可以直接判断文件类型选择对应解码了。经过测试,也成功了。

    终极解法:chardet

    • 01

      chardet模块可以检测字符编码,应该说是类似问题的终极解决。先安装一下

    • 02

      通过下面代码测试一下两种文件的编码。我们看到,通过chardet模块返回的是一个字典。字典的前一个元素是编码检查的概率,后一个是编码类型

    • 03

      我们看到,文本文件的编码方式是GB2312,而我们上面使用gbk的解码也是可以的,那是因为gb2312是gbk的一个子集(GBK/1、GBK/2是GB2312区域)

    • 04

      现在我们修改一下最终的代码,把这个编码问题解决掉~

    (0)

    相关推荐

    • 网页UTF-8中文乱码问题解决方法

      网页UTF-8中文乱码问题解决方法只有经过多方面测试的东西才有质量的保证和说服力,之前一直都是在本地做开发,经过本地测试也是通过的,但一发布到远程服务器上就问题百出了,比较头疼的就是中文乱码的问题. ...

    • JSP页面中文乱码问题解决方法

      JSP页面中文乱码问题解决方法 操作方法 01 1.新建两个JSP页面 02 2.在c.jsp中新建一个表单 03 3.在d.jsp中接收这个值 04 4.运行c.jsp 05 5.输入带中文的参数, ...

    • Excel打开CSV文件中文乱码怎么办

      对中文支持不好的软件都是耍流氓. 操作方法 01 上周四,从某网站导出的数据直接打开是这样的 02 项目紧急,实在没有时间来处理这样的问题了.崩溃中.尝试使用JSON格式导出数据,然后转化成CSV格式 ...

    • Java解決BufferedReader读取UTF-8文件中文乱码

      简单易学,解决实际问题为主 操作方法 01 最近用到了BufferedReader  乱码问题,经过尝试,以下为解决办法 原代码为: BufferedReader read = new Buffere ...

    • nginx中设置目录浏览及中文乱码问题解决方法

      在Nginx下默认是不允许列出整个目录的。如需此功能, 先打开nginx.conf文件,在location server 或 http段中加入 autoindex on; 另外两个参数最好也加上去: ...

    • 解决SqlPlus前台程序出现中文乱码的问题

      在使用sqlplus的过程中,常常会遇到某一台机器在访问oracle数据库时中文显示乱码的问题,实际上这是因为客户端字符集和服务器字符集不一致导致的.在实际使用中,服务器字符集,客户端字符集和操作系统 ...

    • VLC播放器中文字幕乱码问题解决方法

      VLC对于Mac用户来说算得上是必备软件.其相当于PC上的"暴风影音",但Mac新手使用VLC播放avi时都会碰到字幕乱码的问题.avi字幕的格 式有多种,这里假设你使用常见的.s ...

    • 解决myeclipse导入项目中文乱码问题的多种方法

      MyEclipse中导入项目时出现乱码是什么原因?如何解决Myelipse导入项目中文乱码的问题?大家在Myeclipse导入项目的时候,应该都遇见过一些乱码的问题,不单单只是Myeclipse有这个 ...

    • 如何解决Excel打开csv文件中文显示乱码问题

      Excel默认支持csv文件,有些用户遇到了中文显示乱码问题,想知道如何解决,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步根据下图所示,先用python爬取网站数据,接着将它导 ...