Python 编码总结

Python里面中文乱码问题一个让初学者很头痛的问题,自己在做项目的时候也遇到不少的编码问题,在这里做一个小小的总结。

  • 编码转换
  • 中文乱码问题
  • 外部文件读取

1. 编码转换

:Python内部使用Unicode作为默认编码来表示字符串(string)。在编码转换的过程中,将Unicode作为中间编码进行过度是一个本质的思想。

FromCode –> Unicode –> ToCode
从FomeCode转成Unicode的过程叫做decode();
从Unicode转换成ToCode 的过程叫做encode();

例如:GBK –> Unicode –> utf-8
写法:str.decode(‘GBK’).encode(‘utf-8’)

注:已经是Unicode编码的字符串不能进行decode。

2. 中文乱码问题
Python默认会把源代码用ASCII(American Standard Code for Information Interchange)编码进行处理,在只使用英文字符的情况下,不会出现问题,但是如果用了中文,就会出现报错(SyntaxError: Non-ASCII character),因为用ASCII编码方式是无法处理中文的。

默认处理方式:源代码 –> ASCII –> Unicode –> ASCII –> 结果

以下的代码查看默认的编码方式:

import sys
print sys.getdefaultencoding()

因此,通常我们会在源代码的第一行注释# -- coding: utf-8 --。表示设置编辑器的默认保存为 utf8 格式。这样在编辑代码的时候就不用考虑编码转换问题。

同样也可以对Python的全局进行编码设定:

import sys
sys.setdefaultencoding('utf-8')

3. 外部文件读取
从外部读取文件时也会造成中文乱码的问题,比如从excel、text中读取文件,需要注意读取的文件的编码格式,根据文件本身的编码格式先做decode成Unicode,然后再做处理。

判断字符串的编码方式:

import chardet
chardet.detect("编码")
##{'confidence': 0.7525, 'encoding': 'utf-8'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值