python轻松实现代码编码格式转换

最近刚换工作不久,没太多的时间去整理工作中的东西,大部分时间都在用来熟悉新公司的业务,熟悉他们的代码框架了,最主要的是还有很多新东西要学,我之前主要是做php后台开发的,来这边之后还要把我半路出家的前端学好、还要学习C ,哈哈,总之很充实了,每天下班回家都可以睡的很香(一句话总结,就是吃得香、睡的香~)。再说说换工作时候吧,今年年初正式毕业半年了,感觉自己技术增长很快,原公司里面程序员的地位还不如运营,所以想换个工作,面试了3家(2家大的、一家小的),都给offer了,当然从大公司里面挑了个各方面综合(工资、干什么、交通等等)还不错的,反正感觉就很顺利的进来了(比毕业的时候容易多了),哈哈,越努力、越幸运,越幸运、越努力!。从这周开始,继续整理博客,免得给自己造成懒得习惯。
  刚来这个公司,熟悉了环境,老大就开始让我做一个迁移、修改代码的工作,我想说的是,这种工作真没劲~~,看别人的代码、改别人的代码、这里改个变量、那里改个文件名······,都是些没技术含量、很繁琐的事情,不过通过迁移代码顺便熟悉下环境也好。扯了这么多,说说今天的主题吧——代码编码格式改变,由于某些原因,需要将代码从A机房迁移到B机房,这两个之间不能互相访问,但是历史原因导致A机房的代码全是utf8编码的,B机房要求是GBK编码,看看这个怎么解决。

编码问题
  先说说为什么会有编码问题,就拿上面那个例子来说,B机房这边数据库全是GBK编码的,因此从数据库中取出来的数据都是GBK的,从数据库中取出来的数据是GBK编码的,要在展示的时候不乱码,在不对数据库取出的数据转换的情况下,就需要发送header的时候设置编码为GBK,输出的文件(html、tpl等)都必须是GBK的,看看下面这个图会更清楚点:

    DB(GBK) => php等(编码格式不限但如果代码文件中有汉字,文件就要是gbk编码或者在汉字输出的时候转化为gbk) => header(GBK)  => html、tpl(GBK)

  或者还有一种方式只在出库的时候在代码中将utf8转化为gbk,总的来说utf8还是更流行点,问题更少点

    DB(GBK) => php等(utf8,并将从数据库取出的数据转化为utf8) => header(utf8) => html、tpl(utf8)

  只要按照上面这两种规范编码格式,就不会出现乱码情况,起码我测试的第一种方式是没问题的,所以我猜第二种也ok,好了,现在就来写一个转换文件编码格式的小脚本:    
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Filename:changeEncode.py
import os
import sys
 
def ChangeEncode(file,fromEncode,toEncode):
  try:
    f=open(file)
    s=f.read()
    f.close()
    u=s.decode(fromEncode)
    s=u.encode(toEncode)
    f=open(file,"w");
    f.write(s)
    return 0;
  except:
    return -1;
 
def Do(dirname,fromEncode,toEncode):
  for root,dirs,files in os.walk(dirname):
    for _file in files:
      _file=os.path.join(root,_file)
      if(ChangeEncode(_file,fromEncode,toEncode)!=0):
        print "[转换失败:]" _file
      else:
        print "[成功:]" _file
 
def CheckParam(dirname,fromEncode,toEncode):
  encode=["UTF-8","GBK","gbk","utf-8"]
  if(not fromEncode in encode or not toEncode in encode):
    return 2
  if(fromEncode==toEncode):
    return 3
  if(not os.path.isdir(dirname)):
    return 1
  return 0
 
if __name__=="__main__":
  error={1:"第一个参数不是一个有效的文件夹",3:"源编码和目标编码相同",2:"您要转化的编码不再范围之内:UTF-8,GBK"}
  dirname=sys.argv[1]
  fromEncode=sys.argv[2]
  toEncode=sys.argv[3]
  ret=CheckParam(dirname,fromEncode,toEncode)
  if(ret!=0):
    print error[ret]
  else:
    Do(dirname,fromEncode,toEncode)

  脚本很简单,使用也很简单

代码如下:

  ./changeEncode.py target_dir fromEncode toEncode

这里要注意下,几种常见编码的关系:

  us-ascii编码是utf-8编码的一个子集,这个是从stackoverflow上得到的,原文如下ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded,

我试了下确实是的,在不加汉字的时候显示编码为us-ascii,加了汉字之后,变为utf-8。

  还有就是ASNI编码格式,这代表是本地编码格式,比如说在简体中文操作系统下,ASNI编码就代表GBK编码,这点还需要注意

  还有一点就是一个在linux下查看文件编码格式的命令是:
代码如下:

file -i *

  可以看到文件的编码格式。

  当然了,上面的可能有些文件中有特殊字符,处理的时候会失败,但一般程序文件是没有问题的。
以上就是本文所述的全部内容了,希望对大家学习python能够有所帮助。

数据分析师 Python

CDA大数据分析圈是国内第一个汇聚大数据全面资源、数据人必备的APP。CDA整合了近千个大数据相关专业网站及媒体来源,汇聚了数百场国内大数据活动与会议,数千名名技术大牛、行业领袖,以及总结了最系统的优质学习课程资源。在这里,你可每天接触到最新行业资讯、前沿技术干货等信息;你可参与CDA俱乐部活动、各类大型会议,亲身与大牛接触,获得实务经验。你也可在专业课堂上与国内顶尖讲师进行交流切磋,最有效规划自身大数据职业发展。
  CDA大数据分析圈是数据人的家园,圈子里,资源流通,共享智慧,合作发展。CDA以“创新、开放、分享”的理念,期待你的加入!

转载于:https://www.cnblogs.com/amengduo/p/9586703.html

python轻松实现代码编码格式转换相关推荐

  1. Python轻松实现PDF格式转换(附详细源码)

    公众号后台回复"图书",了解更多号主新书内容 作者:J哥 来源:菜J学Python 项目背景 网上PDF转换工具眼花缭乱,选择困难症,有些甚至还收费: 直接以其他格式打开PDF效果 ...

  2. python 表名代码编码格式_14行代码示例讲解:教你解决python上传图片限制格式问题...

    前言: 这篇文章主要介绍了python 上传图片限制格式问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下!!! 嗨喽:正在学习python的小伙伴或者打算学习的,可以私信小 ...

  3. python万年历源代码,python万年历实现代码 含运行结果

    python万年历实现代码 含运行结果 发布于 2017-06-15 16:13:43 | 114 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释 ...

  4. python简单代码 春节集五福-新年福利来一波之Python轻松集齐五福(demo)

    新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的"福",今天就带领大 ...

  5. python 加注拼音-一个将汉字转换成汉语拼音的python库的代码

    下边代码段是关于一个将汉字转换成汉语拼音的python库的代码. #!/usr/bin/env python """ Author:cleverdeng E-mail:c ...

  6. python汉字转拼音代码,一个将汉字转换成汉语拼音的python库的代码

    下边代码段是关于一个将汉字转换成汉语拼音的python库的代码. #!/usr/bin/env python """ Author:cleverdeng E-mail:[ ...

  7. Python实现银行金额大写汉字转换【简单易懂,代码可以直接运行】

    Python实现银行金额大写汉字转换[简单易懂] 业务需求: •银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字. •目前只需完成1~5位整数转换即可. 关键技术分 ...

  8. python美元汇率兑换程序代码_还可以这样玩?用Python完成一个在线汇率转换小程序...

    原标题:还可以这样玩?用Python完成一个在线汇率转换小程序 大家好,小数在这里给大家拜个早年啦 今天给大家分享的是用Python完成一个在线汇率转换小程序,是基于一个持续更新的汇率网站实现的,让我 ...

  9. 温度转换python代码解释_如何用python代码温度转换?

    如何用python代码温度转换? 用python代码温度转换的方法: 步骤一:分析问题的计算部分 步骤二:确定功能,使用IPO方法进一步分析 输入:华氏或者摄氏温度值.温度标识 处理:温度转化算法 输 ...

最新文章

  1. 模型花费几十万美元,五年之间指导无数项目,才发现负样本用的是null?
  2. commons fileUpload 文件上传下载
  3. 题目1023:EXCEL排序
  4. sql server(常用)
  5. layui选项卡嵌套选项卡_在ProtoPie中使用嵌套组件构建选项卡栏
  6. rxjs 怎么使用_使用RxJS Observables进行SUPER SAIYAN
  7. git push 和 pull 时 免密执行的方法
  8. java table 设置长度_Java字节码lookupswitch和tableswitch总指令长度
  9. Linux内核深入理解定时器和时间管理(3):tick 广播 框架 和 dyntick
  10. DB pivot unpivot
  11. Ceilometer - Install the API behind mod_wsgi
  12. iOS 结合YYLabel实现文本的展开和收起
  13. python爬取酷狗音乐top500及歌词_爬取酷狗音乐Top500(示例代码)
  14. HDOJ 6078-Wavel Sequence
  15. 俺常去(用)滴地方~
  16. 口袋之旅html5超强账号,口袋之旅好号和密码
  17. “百度+创维”强力破局家电产业:中国AI大屏奇点临近
  18. Linux命令打开电源设置,使用Linux控制USB电源(开/关)
  19. OI生涯回忆录(Part4:至初三省选)
  20. 统计学—基于R 第一章 数据处理

热门文章

  1. java从电脑接收数据丢失_网络编程:Java数据报之失序和丢包Java -电脑资料
  2. navicat mysql 计划任务_navicat创建MySql定时任务的方法详解
  3. 小程序源码:社群微群人脉系统小程序版本源码下载带流量主功能实现广告效益
  4. 笔记本win11 电源计划 没有被动散热选项
  5. 分析下微信和支付宝当年几乎同时做社交,为啥企鹅起来了?
  6. 发布要素服务数据源没有被注册到服务器,则此数据被复制到服务器
  7. 荒岛余生2java攻略_荒岛余生2时空探秘_荒岛余生2:时空探秘全剧情+全主,支线任务+道具收集_安卓应用游戏下载- AppChina应用汇...
  8. 溢出显示三个圆点基本操作
  9. python画鞭炮_Python实践|憨憨炸鞭炮
  10. 窗口布局流程 - 安卓R