需求:将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"))

python中utf-8和gbk编码格式_Python实现把utf-8格式的文件转换成gbk格式的文件相关推荐

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

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: 代码如下: def ReadFile(filePath,encoding="utf-8″): with codecs.op ...

  2. python中object转为float_object格式怎样无损转换成float64格式

    这次给大家带来object格式怎样无损转换成float64格式,object格式无损转换成float64格式的注意事项有哪些,下面就是实战案例,一起来看一下. 在数据处理过程中 比如从CSV文件中导入 ...

  3. 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)

    用Python批处理将WORD文件转换成PDF格式 一.问题分析 key words:批处理.WORD转换PDF.办公自动化 二.材料准备 三.代码实现 ☆其他问题:日常遇到问题,整理笔记不易,欢迎交 ...

  4. netbeans html 格式化,在NetBeans IDE8.0中怎么把html的文件转换成jsp格式

    满意答案 在NetBeans IDE8.0中把html的文件转换成jsp格式的方法: 将html页改成jsp有两种方法,第一种是直接修改html文件,另一种是新建jsp文件. 1.原始html文件内容 ...

  5. python将object转换为float_object格式怎样无损转换成float64格式

    这次给大家带来object格式怎样无损转换成float64格式,object格式无损转换成float64格式的注意事项有哪些,下面就是实战案例,一起来看一下. 在数据处理过程中 比如从CSV文件中导入 ...

  6. 在asp.net中做视频转换,将各种视频文件转换成.flv格式

    首先,我们部署一下文件夹.在工程的目录下新建几个文件夹如下图: UpFiles文件夹是要保存你上传的文件,PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截 ...

  7. 怎样有效的将电脑中WPS文件转换成Excel格式

    要知道在WPS软件中新建的表格编辑好后保存的文件在发送给其他人,别人点击文件却发现无法打开WPS格式的文件,原因是电脑中没有安装WPS的原因.要想查看文件内的内容难道只有在电脑下载WPS软件一种方法吗 ...

  8. python tif格式的图片转换成其他格式

    为了解决python 将tif格式图片用cv2等其他包转成其他格式,会出现图片变成灰色或者其他颜色的问题. 用第三方库tifffile就可以完全解决这个问题,代码如下: import tifffile ...

  9. python 操作word 替换字符串为图片_python实战===老司机奇技淫巧系列之字符转换成图片...

    先放两张效果图: 还有这个: 是不是立马逼格满满~ 这里用到的是一个有趣的模块,叫wordcloud: *建议自行通过下载setup.py的方式安装,pip install 不一定能下载成功. 打开, ...

最新文章

  1. 当深度学习遇上异构并行计算
  2. 2014年度工作总结
  3. 图解:SQL Server SSIS包和job的部署攻略
  4. CSS3新单位vw,vh,vmin,vmax详解
  5. 洛谷 P3952时间复杂度 (本地AC测评RE的伪题解)
  6. MFC对话框响应ON_UPDATE_COMMAND_UI事件
  7. linux 解压缩与压缩
  8. bcb6通过https接口post数据_3分钟短文 | 有挑战!PHP用1个函数实现post请求,你用哪个?
  9. 一个注册表清理工具Advanced Uninstaller PRO 12
  10. M/M/1 排队论模型
  11. DjangoBook2.0 中文版:电子书
  12. wifi频率和zigbee干扰_怎样设置Zigbee和wifi信道避免干扰?
  13. Python模块大全(Mark随用随看)
  14. 视频音轨音量是否为0检测过程
  15. 阿里云短信服务(申请与代码)
  16. blog10 提取候选词的输入文本
  17. Centos 8查询和设置当前时区
  18. POJ1753:翻棋子
  19. 经验 | 如何编写优质嵌入式C代码
  20. 关于solidworksPDM插件的制作

热门文章

  1. Linux拓展之Shell中函数的返回值
  2. WPS for Linux打印失去响应问题
  3. [机器学习与scikit-learn-12]:数据预处理-5-重新编码:特征的二值化、oneHot编码
  4. 有序列表、无序列表、自定义列表
  5. windows 10 优化 (另一篇windows7优化的基础上 补充)
  6. Apache MPM介绍
  7. scp--- Linux远程复制文件和目录
  8. iOS开发马甲包被拒
  9. 给个华为服务器账号和密码忘了怎么办啊,如果忘记了华为手机的账号密码怎么办,该如何找回密码呢...
  10. linux批量替换文件名中的日期,rename:Linux 批量修改文件名命令,支持正则表达式...