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

【www.ahwmw.com--党性分析材料】

  文章主要介绍了python概率计算器实现方法,实例分析了Python实现概率计算的技巧,具有一定参考借鉴价值,需要的朋友可以参考下.

  本文实例讲述了python概率计算器实现方法。分享给大家供大家参考。具体实现方法如下:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  由于某些原因,需要将代码从A机房迁移到B机房,这两个之间不能互相访问,但是历史原因导致A机房的代码全是utf8编码的,B机房要求是GBK编码,看看这个怎么解决。虽然很简单,但是还是要推荐给大家,需要的小伙伴参考下吧。

  最近刚换工作不久,没太多的时间去整理工作中的东西,大部分时间都在用来熟悉新公司的业务,熟悉他们的代码框架了,最主要的是还有很多新东西要学,我之前主要是做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,好了,现在就来写一个转换文件编码格式的小脚本:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  #!/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能够有所帮助。

  请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  from random import randrange

  #randrange form random module

  def calc_prob(strengths):

  """A function that receives an array of two numbers

  indicating the strength of each party

  and returns the winner"""

  if strengths[1]>strengths[0]:

  #Bring the bigger number to the first position in the array

  temp=strengths[0]

  strengths[0]=strengths[1]

  strengths[1]=temp

  prob1=abs(strengths[0]-strengths[1])

  #The relative strength of the 2 parties

  prob2=randrange(0,100)

  #To calculate the luck that decides the outcome

  if prob2 in range(0,33-prob1):

  #Check if the weaker party is capable of winning.

  #The condition gets narrower with the increase

  #in relative strengths of each parties

  return strengths[1]

  elif prob2 in range(33-prob1,66-prob1):

  #The middle condition

  return "Draw"

  else:

  return strengths[0]

  #Luck favors the stronger party and if relative strength

  #between the teams is too large,

  #the match ends up in favor of the stronger party

  #Example

  calc_prob([50,75]);#Always has to be a list to allow exchange

  #Can be programmed in hundreds of better ways. Good luck!

  希望本文所述对大家的Python程序设计有所帮助。



本文来源:https://www.ahwmw.com/dangtuanfanwen/44290/

《python轻松实现代码编码格式转换.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式