Python:查看文件的编码格式-chardet

Python:查看文件的编码格式-chardet,第1张

其中, encoding 为检测出的编码, confidence 为可信度, language 是语言液裂。

另外一个例子:

检测的编码是GB2312,闹祥闭注意到GBK是GB2312的超集,两者是同一种编码,检测正确的宴塌概率是74%,language字段指出的语言是'Chinese'。

注意:chardet支持检测的编码列表请参考官方文档 Supported encodings 。

读取ANSI编码文件

建立一个文件test.txt,文件格式用ANSI,内容为:

abc中文

用Python来读取

# coding=gbk

print open("Test.txt").read()

结果:abc中文

读取utf-8编码文件没局(无BOM)

把文件格式改成UTF-8:

结果:abc涓 枃

显然,这里需要解码:

# -*- coding: utf-8 -*-

import codecs

print open("Test.txt").read().decode("utf-8")

结果:abc中文

读取utf-8编码文件(有BOM)

某些软件在保慧樱存一个以UTF-8编码的文件时,默认会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。在有些软件可以控制是否插入BOM。如果在有BOM的情况下,在读取时需要自己去掉这些字符,python中的枯碧让codecs module定义了这个常量:

python版本似乎太低了。我印象中国际编码支持似乎是版本高些才支持好些。也许python2.3以后,也许python2.5以后。

给你一个不是很准确的用法。你试试看。也许成。我一直是这么隐改如做的。

r=''

s=open("somefile.txt","rb").read() #如果改成read(4096)有可能不成功

for enc in ['euc', 'big-5', 'utf-8', 'sjis', 'gbk', 'gb18030', 'utf-16']:

try:

r=s.decode(enc).encode('sjis')

break

except:pass

就相当于全部试歼弯一遍,哪个能用就用哪个。这灶启个方法会存在两个错误。你自己试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12224595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存