700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python实现把utf-8格式的文件转换成gbk格式的文件

Python实现把utf-8格式的文件转换成gbk格式的文件

时间:2020-03-22 03:29:45

相关推荐

Python实现把utf-8格式的文件转换成gbk格式的文件

后端开发|Python教程

Python,utf-8格式文件转换成gbk

后端开发-Python教程

需求:将utf-8格式的文件转换成gbk格式的文件

在线zip解压源码,qt模仿vscode样式,ubuntu 看内存,从进程关闭tomcat,爬虫 刑法,Php搜索系统,西樵seo优化如何,视频点播网站源码下载,海洋cms添加模板lzw

实现代码如下:

棋牌源码支付平台,网易云 ubuntu 入口,中国爬虫机械臂,php里each,延庆seo服务lzw

def ReadFile(filePath,encoding=”utf-8″):

with codecs.open(filePath,”r”,encoding) as f:

return f.read()

瀑布流 网站 php 源码,ubuntu安装tool,tomcat配置端口为80,12306爬虫代码,php软件开发是什么,长寿区seo推广有哪些品牌lzw

def WriteFile(filePath,u,encoding=”gbk”):

with codecs.open(filePath,”w”,encoding) as f:

f.write(u)

def UTF8_2_GBK(src,dst):

content = ReadFile(src,encoding=”utf-8″)

WriteFile(dst,content,encoding=”gbk”)

代码讲解:

函数ReadFile的第二个参数指定以utf-8格式的编码方式读取文件,返回的结果content为Unicode然后,在将Unicode以gbk格式写入文件中。

这样就能实现需求。

但是,如果要转换格式的文件中包含有一些字符并不包含在gbk字符集中的话,就会报错,类似如下:

UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\xa0′ in position 4813: illegal multibyte sequence

以上的报错信息的意思是:在将Unicode编码成gbk的时候,不能将Unicode u’\xa0’编码成gbk。

这里,我们需要弄清楚gb2312、gbk和gb18030三者之间的关系

GB2312:6763个汉字

GBK:21003个汉字

GB18030-2000:27533个汉字

GB18030-:70244个汉字

所以,GBK是GB2312的超集,GB18030是GBK的超集。

理清了关系之后,我们进一步改进下代码:

def UTF8_2_GBK(src,dst):

content = ReadFile(src,encoding=”utf-8″)

WriteFile(dst,content,encoding=”gb18030″)

运行后,发现没有报错,可以正常运行。

因为,在GB18030字符集中,可以找到u’\xa0’对应的字符。

此外,还有另外一种实现方案:

需要修改下WriteFile方法

def WriteFile(filePath,u,encoding=”gbk”):

with codecs.open(filePath,”w”) as f:

f.write(u.encode(encoding,errors=”ignore”))

这里,我们将Unicode编码(encode)成gbk格式,但是注意encode函数的第二个参数,我们赋值”ignore”,表示在编码的时候,忽略掉那些无法编码的字符,解码同理。

但是,当我们执行后,发现可以成功的将utf-8格式的文件修改成了ansi格式。但,另外发现生成的文件中,每个一行都有一行空行。

这里,可以指定以二进制流的形式写文件,修改后的代码如下:

def WriteFile(filePath,u,encoding=”gbk”):

with codecs.open(filePath,”wb”) as f:

f.write(u.encode(encoding,errors=”ignore”))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。