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

问题线索

  1. 1

    可以知道的是,文本文件的默认编码并不是utf8。

    我们打开一个文本文件,并点击另存为

  2. 2

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

    END

编码测试

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

    END

解决法一:异常处理

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

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

    END

解决法二:文件类型

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

    END

终极解法:chardet

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

  2.  

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

  3.  

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

  4.  

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

时间: 2024-12-20 02:04:27

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

Zip文件中文乱码问题解决方法(MAC->Windows)

前言: 最近收到的ZIP交互原型,打开查看中文一堆乱码.主要是产品都是高大上啊,用的都是MAC,咱酷毙用的Windows,话说安卓APP,你用MAC搞啥啊.可恨的压缩用的是zip,不是rar之类的.为了咱用Windows开发及测试的屌丝,分享下解决方法.如你高在上,用的MAC,请跳过本文. 目录: 1.问题 2.解决方法 1.问题 现象: a.ZIP文件,360压缩3.1正式版查看.解压中文为乱码. b.ZIP文件,Winrar 3.7压缩查看.解压中文为乱码. 2.解决方法 方法一:安装新版本

JAVA 写中文字符串到指定文件 中文乱码 问题解决

之前试过下面代码里面的注释掉的 方法,都不行,后来想到了不如指定编码格式试试,果真可以了. String as= “中文字符”; //byte[] b = as.getBytes(); try{ File file=new File("F:test.txt"); if(!json.exists()){ file.createNewFile(); } Writer writer = new OutputStreamWriter(new FileOutputStream(file.getA

python读写csv时中文乱码问题解决办法

参考1 参考2 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV文档是一种编辑方便,可视化效果极佳的数据存储方式 1.python读写.追加csv方法: 'r':只读(缺省.如果文件不存在,则抛出错误) 'w':只写(如果文件不存在,则自动创建文件) 'a':附加到文件末尾(如果文件不存在,则自动创建文件) 'r+':读写(如果文件不存在,则抛出错误) 1

MyEclipse/Eclipse中properties文件中文乱码问题解决

有时候在myeclipse或者eclipse中打开properties文件时会发现其中的中文都是乱码.这是由于当前的properties文件编码格式不支持汉字造成的.当这种情况发生时,我们可以按照以下两种方式更改文件的编码格式即可.方法一可以一次性更改所有项目的properties文件编码格式.方法二可以根据需要有选择地对某些文件进行更改. 方法一:依次点击windows-preferences-content-text-Java properties file,并将弹出窗和右下方的defaul

python写入csv文件中文乱码解决方案

今天修改程序,需要写入csv文件,发现中文会乱码,后来查了下,可以设置文件写入属性后,就可以解决: import csvimport codecslist=['a101','b101']sumlist=[]for str in list: templist=[] templist.append('a') templist.append('b') templist.append('c') sumlist.append(templist)csvfile = file('csv_test.csv',

[转]Python的经典问题——中文乱码

关键字:Python UTF-8 GBK 中文 乱码估计入门时都会遇到的.我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正常的.百思不得其解.首先查看了一下源文件的编码格式,是UTF-8.经过搜索再搜索,调试再调试,也换了几个编译器,发现比IDLE还糟糕(可能需要进行encode设置).问题终于解决了,一共花了俺将近5个小时,写在这里,希望遇到问题的人能搜索到这里,不再重犯.乱码原因:因为你的文件声明为utf-8,并且也

django 中文乱码问题解决

1.在所有涉及到中文显示的页面头加上 #coding:utf-8 2.修改settings.py文件,添加 FILE_CHARSET = 'utf-8' DEFAULT_CHARSET = 'utf-8' 然后修改LANGUAGE_CODE = 'zh-cn' 3.用记事本打开,另存为utf-8编码的. 以上都做过还是乱码,我就没招了 django 中文乱码问题解决,布布扣,bubuko.com

ubuntu mysql emma中文乱码问题解决

ubuntu mysql emma中文乱码问题解决 emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(python). apt-get安装emma sudo apt-get install emma ubuntu的apt-get 安装emma是在/usr/share/emma目录下面. cd /usr/share/emma/emmalib sudo vim __init__.py 找到 "db_encoding": "lat

WingIDE中文乱码问题解决方法

WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编码方式为UTF-8即可. 具体的方法如下: 依次选择Edit->Preferences ->Debugger ->I/O,将其中的Encoding相关编码都改为UTF-8即可. 具体见下图: 来自为知笔记(Wiz)