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

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

实现代码如下:

def ReadFile(filePath,encoding="utf-8"):
    with codecs.open(filePath,"r",encoding) as f:
        return f.read()

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-2005: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"))

相关文章:

http://www.crifan.com/python_csv_writer_writerow_redundant_new_line/ 
http://www.v2ex.com/t/40033

时间: 2024-10-18 20:15:24

Python:将utf-8格式的文件转换成gbk格式的文件的相关文章

python:将xml格式文件转换成json格式文件

由于json格式的文件在处理起来,有很强的便利性,而工作中每天产生大量的xml格式的文件,所以有需求将xml格式的文件转换成json格式的文件.下面直接贴出代码,有两个版本,根据需求自由选择: #!/usr/bin/python # -*- coding: utf-8 -*- #Function:Xml_To_Json #version 1.0 #Author: Herman #需要用到的两个模块 import xmltodict; import json; #定义函数 def pythonXm

linux环境下deb格式文件转换成rpm格式

以 alien_8.87.tar.gz 为例: 下载.安装 alien_8.87.tar.gz [[email protected] ~]# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.87.tar.gz [[email protected] ~]# tar zxvf alien_8.87.tar.gz [[email protected] ~]# cd alien [[email protected] alien

C# Tips: 将 VS2012 / VS2013 的.sln文件、project文件转换成 VS2010格式

原来有一些VS2013的工程文件(.sln..csproj),使用.Net 4.0.现需要将它们转换成VS2010格式. 经实验,办法如下: (1) 在Solution文件(.sln)中: 把文件头部这样的行: Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2013 把它们替换成: Microsoft Visual Studio Solution File, Format Version 1

如何将pdf文件转换成cad格式文件

pdf文件是一个封闭性文件,文件不仅不容易编辑修改,而且还可能被加密了,那么如何将pdf文件转换成cad格式文件呢? 下面小编教大家使用pdf转换器实现以上操作,具体步骤如下. 第一步:搜索迅捷pdf在线转换器(http://app.xunjiepdf.com/pdf2cad),找到相关页面点击进入在线网站主页面,进入页面后,用我们鼠标点到文档转换,找到CAJ转Word那个栏目. 第二步:点击"选择文件"选择需要处理的文件.如果想要一次性处理多个文件,那么我们可以继续添加文件(批量转换

如何使用PDF转换器将PDF文件转换成Excel格式

其实作为办公中,对于PDF和Excel两种格式大家还是比较喜欢使用Excel格式,因为它操作起来比较简单.方便.PDF格式虽然很受欢迎,但是这种格式的虽然安全性比较高但没办法进行编辑,在处理的时候有很多不便的地方.在很多时候需要将PDF转换为Excel的格式,那该怎么转换呢? 1.转换文件格式之前首先我们可以打开浏览器搜索PDF转换器,进入到软件的官网中进行安装,利用工具来进行操作. 2.打开PDF转换器后,进入主页面.选择打开第一类栏目PDF转换其它文件,点击文件转Excel. 3.点击添加文

Excel文件转换成PDF格式如何操作

Excel文件相信对于办公一族的人来说是在熟悉不过了.每天多多少少都要处理到它,像数据之类的文件一般都保存在Excel文件中.当然有时候考虑到一些因素需要将Excel文件转换成PDF格式,这样的文件格式转换我们该怎么操作呢?不知道的伙伴不妨试下下面这种方法 ,希望能帮助到大家! 1:想要完整的进行格式间的转换,我们可以选择在电脑端进行操作,将Excel转换PDF格式的话可以利用到辅助型的工具.进入到浏览器搜索相关软件就可以进行安装.2:进入PDF转换器的主页面.可以清晰明了的看到它许多PDF功能

CAD文件转换成DWF格式文件怎么在转换器中转换?

CAD文件转换成DWF格式文件怎么在转换器中转换?大家都知道DWF文件是一种高度压缩.开放.安全的文件格式,它可以将丰富的设计数据高效的分发给需要查看.评审或者打印这些数据的人看,因为在编辑器中编辑完的图纸都是dwg格式的,所以就需要将CAD图纸进行转换,那CAD文件转换成DWF格式文件怎么在转换器中转换?具体要怎么来进行操作?下面小编就来教教大家,想要了解的朋友也可以一起来看看,希望能够帮助到你们. 第一步:打开电脑,在电脑桌面上任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,然

怎么将PDF格式文件转换成CAD格式呢?

怎么将PDF格式文件转换成CAD格式呢?在日常生活中,PDF和CAD格式的文件我们都不少见,那我们应该使用什么办法将这两个格式的文件进行转换呢?今天小编就要来教大家的就是怎么将PDF格式的文件转换成CAD格式的全部操作了,希望被采纳! 第一步:首先要打开你们电脑上面的CAD转换器软件,如果你们电脑上面没有这样一款软件的话,你们就需要去到官网上面的进行搜索下载了!小编是用的就是这款"迅捷CAD转换器"软件!第二步:将软件完成下载之后安装到你们的电脑桌面上然后就可以进行操作使用了!之后点击

CAD图纸文件转换成JPG格式其大小如何进行更改?

CAD图纸文件转换成JPG格式其大小如何进行更改?基本上从事CAD的小伙伴们都会使用到绘制CAD图纸文件的的软件,但是在绘制完成一张CAD图纸文件之后我们想要改变图纸的格式,将其转换成JPG格式我们应该如何进行操作呢,在操作过程中想要改变其图片的大小我们又应该如何进行操作,今天小编就要来教教大家CAD图纸文件转换成JPG格式其大小如何进行更改的全部操作步骤,希望大家能够进行采纳! 步骤一:您首先要打开你们电脑桌面上面的迅捷CAD转换器软件,电脑上面没有这款软件的可以去到软件商店或者是官网上面上面