更新:
一个解释更详细和全面的博文:https://www.cnblogs.com/zhangqigao/p/6496172.html

最近开始处理中文文本,读取文件有时候会出现乱码。原因:编码和解码方式不一样。
所以,解决这个问题的方法就是正确地解码,问题拆解为:1、弄清楚待查看文件的编码方式;2、解码。
 
即:
1、查看文件编码方式:
import chardet
fobj=open(fname,'r')
data=fobj.read()
print chardet.detect(data)['encoding']
2、编码类型转换
python默认使用unicode字符集,默认编码方式utf-8.
str.decode('gbk')    #将gbk编码的字符串转换成unicode编码
str.encode('gbk') #将unicode编码的字符串转换成gbk编码
 

附录A:
windows文件默认编码方式与地域有关:微软为了适应世界上不同地区用户的文化背景和生活习惯,在Windows中设计了区域(Locale)设置的功能。每个Locale代表了某个国家或地区的一组设定,包括字符集,数字、货币、时间和日期的格式等。Windows用一个4字节32位二进制值给Locale编号,记作LCID(Locale ID)。它的高16位表示字符的排序方法,一般为0。在它的低16位中,低10位代表某种语言,高4位指定该语言适用的地区。如中文在中国大陆地区和台湾地区有简体和繁体的区分,它们的低10位相同而高4位不同。
Linux文件的默认编码方式可以在终端执行locale命令,查看输出结果中 LC_CTYPE 对应的内容。
 
附录B:
1981,中国国家标准总局发布GB2312字符集(16位)。
1993 ,国际标准组织发布unicode 1.1字符集(unicode字符集有多个编码方式,分别是UTF-8,UTF-16,UTF-32和UTF-7。)。
            中国国家标准总局发布GB13000.1-93字符集(16位)。扩充GB2312字符集=>GBK(guo biao kuo)字符集(16位)。
就包含字符来说:           GBK = GB2312 +繁体中文+1981年之后简化的简体中文
就包含的中文字符而言:GBK= Unicode 1.1 +  GB13000.1-93

python读文件出现中文乱码的更多相关文章

  1. Python 生成的页面中文乱码问题

    第一 保证 程序源文件里的中文的编码格式,如我们把 源文件的编码设置成utf8的. reload(sys) sys.setdefaultencoding('utf-8') 第二, 告诉浏览器,我们须要 ...

  2. springBoot使用@Value标签读取*.properties文件的中文乱码问题

    上次我碰到获取properties文件中的中文出现乱码问题. 查了下资料,原来properties默认的字符编码格式为asci码,所以我们要对字符编码进行转换成UTF-8格式 原先代码:@Proper ...

  3. python3 库pandas写入csv格式文件出现中文乱码问题解决方法

    python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...

  4. windows bat文件运行中文乱码

      windows bat文件运行中文乱码 CreationTime--2018年7月17日08点51分 Author:Marydon 1.情景展示 运行bat文件,里面的中文提示显示乱码 2.问题剖 ...

  5. python向数据库插入中文乱码问题

    1.python向数据库插入中文乱码问题 直接手动insert into 中文 不乱码,但是用程序跑起来就乱码. conn =MySQLdb.connect(host="127.0.0.1& ...

  6. PHP创建文件命名中文乱码解决的方法

    PHP创建文件命名中文乱码解决的方法 <pre>iconv('utf-8', 'gbk', $dir); </pre> 因为系统环境是gbk 所以里面的字符也要gbk 编码一致 ...

  7. python读文件判断是否已到EOF

    python读文件判断是否已到EOF,也即结尾,一般其它语言都是以EOF直接来判断的,比如 if ( fp.read(chunk_size) == EOF), 但python到结尾后是返回空字符串的, ...

  8. python读文件出现错误解决方法

    python读文件经常会出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 764: illegal multi ...

  9. 解决 Ubuntu 下 gedit编辑器打开文件出现中文乱码问题

    解决 Ubuntu 中 gedit编辑器打开文件出现中文乱码问题 1. 问题分析 在 windows 系统下,.txt 文件默认编码方式为 gb18030 格式的中文编码,而 gedit 默认的编码方 ...

随机推荐

  1. UITextField placeholder text color

    iOS6 and Later 改变UITextField 中占位符 提示文本的文字颜色 在新版本中(iOS6以后)iOS提供一种 Key = value 属性的方式,来改变UI的属性内容.以UITex ...

  2. SVN客户端忽略无关文件

    修改前请先备份文件 ~/.subversion/config. 1,打开Terminal,输入命令: $ open ~/.subversion/config   2,在打开的文件中寻找:`global ...

  3. PHP RSA加解密示例(转)

    1.生成密钥和公钥 开始前需要准备openssl环境 linux 需要安装openssl工具包,传送门http://www.openssl.org/source/ window 下需要安装openss ...

  4. Struts2学习七----------Struts2后缀

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2后缀 - Struts2默认后缀是action - Struts2使用默认后缀时*.action和*都是同一个请求 - Struts2自 ...

  5. cmake学习之- cmake_parse_arguments

    最后更新: 2019-06-08 一.指令介绍 cmake_parse_arguments 为解析函数(function)或 宏(macros) 参数的命令: cmake_parse_argument ...

  6. Autoprefixer:一个以最好的方式处理浏览器前缀的后处理程序

    Autoprefixer解析CSS文件并且添加浏览器前缀到CSS规则里,使用Can I Use的数据来决定哪些前缀是需要的. 所有你需要做的就是把它添加到你的资源构建工具(例如 Grunt)并且可以完 ...

  7. PHP中输出文件,怎么区别什么时候该用readfile() , fread(), file_get_contents(), fgets()

    我在服务器端(Apache环境)上放了一个安卓apk安装包的下载链接,使用readfile()读取apk文件输出下载后,手机安装apk显示解析包错误.但apk本身没问题,下载后文件的大小也是完整的.服 ...

  8. OpenCV 中的三大数据类型:CvMat 类型

    前言 本文将介绍 OpenCV 中的矩阵结构 CvMat 并提供几个很常用的矩阵使用方法. 更多的矩阵处理函数还请参阅相关资料. CvMat 的类型定义 typedef struct CvMat { ...

  9. 利用树的先序和后序遍历打印 os 中的目录树

    [0]README 0.1)本代码均为原创,旨在将树的遍历应用一下下以加深印象而已:(回答了学习树的遍历到底有什么用的问题?)你对比下linux 中的文件树 和我的打印结果就明理了: 0.2)我们采用 ...

  10. 【JavaSE】Java问题总结

    使用BufferedInputStream时OutOfMemoryError异常 eclipse Luna安装subversion(SVN) 使用BufferedInputStream时OutOfMe ...