更新:
一个解释更详细和全面的博文: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

最新文章

  1. 十五天精通WCF——第一天 三种Binding让你KO80%的业务
  2. phpcms V9 常用函数 及 代码整理
  3. MaskEdit 使用方法
  4. 安装sqlserver2012时出现的丧心病狂的错误
  5. [杂] 一些常用的SQL归类之一
  6. javascript实现数据结构:线性表--线性链表(链式存储结构)
  7. 关于64位Linux配置android开发环境出现 No such file or directory
  8. PyCharm 5.0.3 快捷键
  9. SQL-SERVER2008登录错误233
  10. HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
  11. osg蝴蝶纹理
  12. 第二部分----CSS的基础语法
  13. PendingIntent、Notification常用方法
  14. 关于php日期前置是否有0
  15. 阿里推荐的线程使用方法 ThreadPoolExecutor
  16. assets 与 res 目录的区别
  17. java框架之Struts2(2)-访问Servlet API及请求数据封装
  18. laraver框架学习
  19. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
  20. caffe学习记录

热门文章

  1. shell函数传递带空格的参数
  2. c++实现二叉搜索树
  3. VC进程间通信之消息传递PostMessge()或SendMessage()
  4. OpenGL研究3.0 多边形区域填充
  5. 26最小公倍数 lowest common multiple
  6. 将C#文档注释生成.chm帮助文档(转)
  7. Django之信息聚合
  8. NativeBase自定义组件样式
  9. 宜人贷PaaS数据服务平台Genie:技术架构及功能
  10. oracle 推断字符是否为字母