更新:
一个解释更详细和全面的博文: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. servletResponse 实用的页面跳转技术和定时刷新技术

    package response; import java.io.IOException;import java.util.Random; import javax.servlet.ServletEx ...

  2. HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()

    无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...

  3. StringBuilder的append、StringBuffer的append和String str = "a"+"b"的区别?

    大家都知道String+String会开销额外的系统资源,粗略的原因是String是不可变类,每一步操作都会返回新的String变量,占用空间及时间. 其实我的理解不是这样的,我们来看看String+ ...

  4. 如何在linux centos下安装git(转)

    今天想开通github的服务,于是在服务器上安装git,百度到的结果千篇一律的全都有错误,给大家总结分享下. 如果yum install git可以直接安装的可以不通过源码编译安装. 源码安装步骤如下 ...

  5. os引导程序boot 在根目录区寻找os加载程序文件loader 对应的根目录条目

    [0]README 0.0) source code from orange's implemention of a os and for complete code , please visit h ...

  6. C# C/S程序使用HTML文件作为打印模板

    C#   C/S程序使用HTML文件作为打印模板 在网上找了一堆的资料,整理到郁闷呀,慢慢试慢慢改.哎,最终成功了,哈,菜鸟伤不起呀 public partial class Print : Form ...

  7. 【BZOJ3721】PA2014 Final Bazarek 贪心

    [BZOJ3721]PA2014 Final Bazarek Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n ...

  8. EasyDSS RTMP流媒体服务器是怎样炼成的:Easy而且更加互联网!

    开发EasyDSS的初衷 自从12年开始做EasyDarwin的时候,当时眼光一直都仅仅局限在安防监控视频这一块,对RTMP没有太大的重视,对于后起之秀HLS更是没有太多关注,然而经历了15直播火热的 ...

  9. iOS怎样获取任何App的资源图片?

    1.打开iTunes,并与手机相连接 2.按照下图所示执行搜索并下载App 3.到Mac的 /Users/apple/Music/iTunes/iTunes Media/Mobile Applicat ...

  10. Netty聊天室-源码

    目录 Netty聊天室 源码工程 写在前面 [百万级流量 聊天室实战]: [分布式 聊天室] [Spring +Netty]: [Netty 原理] 死磕 系列 [提升篇]: [内力大增篇]: 疯狂创 ...