import codecs
file = codecs.open( "a.txt", "r", "unicode-escape" )
u = file.read()
print(u)
Python 编码转换与中文处理 python 中的unicode 是让人很困惑、比较难以理解的问题.这篇文章写的比较好,utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.
Python 默认脚本文件都是ANSCII编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用" 编码指示 "来修正一个 module 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明: # -*- coding=utf-8 -*-或者#coding=utf-8
其他的编码如:gbk、gb2312也可以;否则会出现:
先说一下python中的字符串类型,在python中有两种字符串类型,分别是str和unicode,他们都是basestring的派生类;
在str的文档中有这样的一句话:
也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等 。
unicode 转为 gb2312,utf-8等,使用 encode(encoding)
utf-8,GBK转换为 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)
普通的 str 转为 unicode,
如果直接执行s.encode('gb2312')会发生什么?
这里会发生一个异常:Python 会自动的先将 s 解码为 unicode,然后再编码成 gb2312 。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用sys.defaultencoding指明的方式来解码 。很多情况下 sys.defaultencoding 是 ANSCII,如果 s 不是这个类型就会出错 。
拿上面的情况来说,我的 sys.defaultencoding 是 anscii,而 s 的编码方式和文件的编码方式一致,是 utf8 的,所以出错了:
对于这种情况,我们有两种方法来改正错误:
s = '中文'
【python编码转换函数 python编码转换在线】s.decode('utf-8').encode('gb2312') ```
import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法 , 我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
print open("Test.txt").read()
import codecs
print open("Test.txt").read().decode("utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in module
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'\ufeff' in position 0: illegal multibyte sequence
import codecs
data = https://www.04ip.com/post/open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = https://www.04ip.com/post/data[3:]
print data.decode("utf-8")
s = "中文"
print unicode(s, "utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in module
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
s = "中文"
print unicode(s, "gbk")
s = "中文"
print unicode(s, "cp936")
python中把ISO-8859-1编码转化为UTF-8当我们爬取一些页面的中文信息时,会出现如下情况:
爬取的中文编码格式不是UTF-8,无法正常显示 , 查看编码格式:
先编码
encode(编码):按照某种规则将“文本”转换为“字节流”,unicode转化为str
decode(解码):将“字节流”按照某种规则转换成“文本”,str转化为unicode
s.decode(''):运行会出错 。因为python 3中的str类型对象有点像Python 2中的unicode,而decode是将str转为unicode编码,所以str仅有一个encode方法,调用这个方法后将产生一个编码后的byte类型的字符 。
推荐阅读
- 女直播技巧,女生直播怎么聊天
- 小猪快跑是什么玩法视频,播放小猪快跑
- 一口游戏王牌竞速的头像,游戏王牌竞速壁纸
- 网络游戏的不公平,网络游戏批评
- linux命令行出现 linux命令行出现菱形
- oracle索引占用的存储空间大小,oracle索引数量多少合适
- 体育游戏大全女生跳舞,女子体育游戏
- 怎么连接宽带不用路由器,怎么连接宽带不用路由器设置
- 怎么mysql与java mysql如何与java连接