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

pythonutf8转gbk,Python实现把utf-8格式的文件转换成gbk格式的文件相关推荐

  1. python中utf-8和gbk编码格式_Python实现把utf-8格式的文件转换成gbk格式的文件

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

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

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

  3. python声明编码为gbk_python入门:UTF-8转换成GBK编码

    1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 #UTF-8转换成GBK编码 4 #temp(临时雇员,译音:泰坡) 5 #decode(编码,译音 ...

  4. mysql gbk编码 字节数,mysql中utf-8编码数据库转换成GBK编码的问题

    摘要 腾兴网为您分享:mysql中utf-8编码数据库转换成GBK编码的问题,之了课堂,易信,一折包邮,星球联盟等软件知识,以及七日杀,草莓软件,装修施工站,桔子会,桌面切换,看小说神器,酷派应用商店 ...

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

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

  6. python批量pdf转图片_批量把PDF文件文件转换成图片格式

    [Python] 纯文本查看 复制代码# -*- coding: utf-8 -*- """ 1.安装库 pip install pymupdf 2.直接运行 " ...

  7. python文件转换成exe和apk文件

    将Python文件转换为Exe文件可以使用pyinstaller或cx_Freeze等工具来实现.这些工具将Python文件转换为独立的可执行文件,这样就可以在没有Python环境的计算机上运行该程序 ...

  8. python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...

    伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...

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

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

最新文章

  1. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证...
  2. uefi启动u盘安装系统_技嘉uefi启动怎么安装win8.1系统【安装教程】
  3. 奥密克戎新毒株XE出现!传播速度快10%
  4. Android各个文件夹对应的分辨率?
  5. [Java]jdbc[转]
  6. 将应用程序集成为Heroku附加组件
  7. 宇轩网络面试题目PHP,二十道接地气的php面试题,让你直接通过面试!就此奉上~...
  8. qq音乐2012绿色版
  9. MATLAB转化彩色图片为灰度图片命令行窗口代码:
  10. jquery的ajax用法
  11. “飞天、无影、小蛮驴…”带你走进2020云栖大会
  12. 215.数组中第的K个最大元素(力扣leetcode) 博主可答疑该问题
  13. 基于Pytorch的YoLoV4模型代码及作品欣赏
  14. 动态规划求解金矿问题
  15. Error: Unresolved node modules: vue
  16. “凸现”三围的健身运动法(图)
  17. 笔记本电脑计算机里面怎么管理,联想笔记本里我的电脑不见了怎么办啊
  18. 树梅派应用38:树莓派 SAKS 扩展板挑战应用 之 PM2.5 指示灯
  19. Iterative closest point (ICP) 算法
  20. android fragmentpageradapter切换不更新,android – FragmentPagerAdapter不会在方向更改时重新创建片段吗?...

热门文章

  1. 理解搜索引擎并且善用google
  2. keras构建卷积神经网络_通过此简单教程学习在网络上构建卷积神经网络
  3. 110_Power Pivot特殊结算日期及财年日期
  4. Python内置函数——locals
  5. 记一次面试过程中的Python编程题
  6. python中的栈及其实现
  7. 小程序剖析 | 小程序中Page的数据设置
  8. dhtmlXTree 指南与实例(一)
  9. 神经网络风格迁移更新篇
  10. 谷歌浏览器设置定位_Chrome如何设置允许所有网站跟踪我的地理位置