更新:
一个解释更详细和全面的博文: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. layui.layer独立组件--解释

    网站文档-链接:http://www.layui.com/doc/modules/layer.html layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护 ...

  2. H5和CSS3新增内容总结

    CSS3选择器有哪些?答:属性选择器.伪类选择器.伪元素选择器.CSS3新特性有哪些?答:1.颜色:新增RGBA,HSLA模式 文字阴影(text-shadow.) 边框: 圆角(border-rad ...

  3. DML过程中记录错误日志

    当你插入几百万数据时,由于有几条脏数据而导致插入失败,是不是很恼火.10g R2之后有个新功能.将插入过程中失败的记录插入到还有一张表中. SQL> drop table test purge; ...

  4. 15:取近似值ApproximateValue

    题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值.如果小数点后数值大于等于5,向上取整:小于5,则向下取整. 输入描述:输入一个正浮点数值 输出描述:输出该数值的近似整数值 输入例子 ...

  5. leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  6. asp.net core 系列之Reponse caching之cache in-memory (2)

    这篇文章(主要翻译于官网,水平有限,见谅)讲解asp.net core 中的 Cache in-memory (内存缓存). Cache in-memory in ASP.NET Core Cachi ...

  7. ReactiveCocoa入门教程——第一部分【转载】

    作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...

  8. request 防盗链

    package request; import java.io.IOException;import javax.servlet.ServletException;import javax.servl ...

  9. Linux - 命令行 管道(Pipelines) 具体解释

    命令行 管道(Pipelines) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24249529 管道操作符" ...

  10. WPF自定义选择年月控件详解

    本文实例为大家分享了WPF自定义选择年月控件的具体代码,供大家参考,具体内容如下 封装了一个选择年月的控件,XAML代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...