欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python中的代碼編碼格式轉換問題

系統 1612 0

  剛來這個公司,熟悉了環境,老大就開始讓我做一個遷移、修改代碼的工作,我想說的是,這種工作真沒勁~~,看別人的代碼、改別人的代碼、這里改個變量、那里改個文件名??????,都是些沒技術含量、很繁瑣的事情,不過通過遷移代碼順便熟悉下環境也好。扯了這么多,說說今天的主題吧――代碼編碼格式改變,由于某些原因,需要將代碼從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 *

  可以看到文件的編碼格式。

  當然了,上面的可能有些文件中有特殊字符,處理的時候會失敗,但一般程序文件是沒有問題的。

以上所述就是本文的全部內容了,希望大家能夠喜歡。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人综合AV在线观看不止 | 国产精品亚洲视频 | 亚洲乱码AV久久久久久久 | 日本精品a在线观看 | 日本黄页在线观看免费 | 三级视频在线观看 | 日本一区二区三区免费观看 | 精品精品国产高清a毛片 | 色噜噜狠狠先锋影音久久 | 亚洲12p| 91香蕉视频导航 | 99国内精品 | 国产成人免费永久播放视频平台 | 欧美日韩专区国产精品 | 欧美日韩视频在线第一区二区三区 | 国产精品俺来也在线观看 | 日本久久久久久久 | 久久精品国产线看观看亚洲 | 91高清在线成人免费观看 | 国产精品伊人 | 久久se精品一区精品二区 | 小明看看在线视频 | 三级三级三级a三级三级 | 色qing网站 | 亚洲www啪成人一区二区麻豆 | 男女性高爱潮免费网站 | 性做爰片免费视频毛片中文ILO | 99久久久无码国产精品 | 亚洲人成在线观看一区二区 | 亚洲一区二区视频在线观看 | 一区二区三区在线免费看 | 五月激情六月婷婷 | 欧美视频亚洲视频 | 午夜爽爽性刺激一区二区视频 | 欧美精品一区二区在线观看 | 无码日本亚洲一区久久精品 | 久久精品一级 | 久久免费看少妇高潮A片麻豆 | 成人免费无毒在线观看网站 | 亚洲第一页在线视频 | 国产精品久久国产精品 |