最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python輕松實現(xiàn)代碼編碼格式轉(zhuǎn)換

 更新時間:2015年03月26日 08:50:35   投稿:hebedich  
由于某些原因,需要將代碼從A機房遷移到B機房,這兩個之間不能互相訪問,但是歷史原因?qū)е翧機房的代碼全是utf8編碼的,B機房要求是GBK編碼,看看這個怎么解決。雖然很簡單,但是還是要推薦給大家,需要的小伙伴參考下吧。

  最近剛換工作不久,沒太多的時間去整理工作中的東西,大部分時間都在用來熟悉新公司的業(yè)務(wù),熟悉他們的代碼框架了,最主要的是還有很多新東西要學(xué),我之前主要是做php后臺開發(fā)的,來這邊之后還要把我半路出家的前端學(xué)好、還要學(xué)習(xí)C++,哈哈,總之很充實了,每天下班回家都可以睡的很香(一句話總結(jié),就是吃得香、睡的香~)。再說說換工作時候吧,今年年初正式畢業(yè)半年了,感覺自己技術(shù)增長很快,原公司里面程序員的地位還不如運營,所以想換個工作,面試了3家(2家大的、一家小的),都給offer了,當(dāng)然從大公司里面挑了個各方面綜合(工資、干什么、交通等等)還不錯的,反正感覺就很順利的進來了(比畢業(yè)的時候容易多了),哈哈,越努力、越幸運,越幸運、越努力!。從這周開始,繼續(xù)整理博客,免得給自己造成懶得習(xí)慣。

  剛來這個公司,熟悉了環(huán)境,老大就開始讓我做一個遷移、修改代碼的工作,我想說的是,這種工作真沒勁~~,看別人的代碼、改別人的代碼、這里改個變量、那里改個文件名······,都是些沒技術(shù)含量、很繁瑣的事情,不過通過遷移代碼順便熟悉下環(huán)境也好。扯了這么多,說說今天的主題吧——代碼編碼格式改變,由于某些原因,需要將代碼從A機房遷移到B機房,這兩個之間不能互相訪問,但是歷史原因?qū)е翧機房的代碼全是utf8編碼的,B機房要求是GBK編碼,看看這個怎么解決。

編碼問題
  先說說為什么會有編碼問題,就拿上面那個例子來說,B機房這邊數(shù)據(jù)庫全是GBK編碼的,因此從數(shù)據(jù)庫中取出來的數(shù)據(jù)都是GBK的,從數(shù)據(jù)庫中取出來的數(shù)據(jù)是GBK編碼的,要在展示的時候不亂碼,在不對數(shù)據(jù)庫取出的數(shù)據(jù)轉(zhuǎn)換的情況下,就需要發(fā)送header的時候設(shè)置編碼為GBK,輸出的文件(html、tpl等)都必須是GBK的,看看下面這個圖會更清楚點:

    DB(GBK) => php等(編碼格式不限但如果代碼文件中有漢字,文件就要是gbk編碼或者在漢字輸出的時候轉(zhuǎn)化為gbk) => header(GBK)  => html、tpl(GBK)

  或者還有一種方式只在出庫的時候在代碼中將utf8轉(zhuǎn)化為gbk,總的來說utf8還是更流行點,問題更少點

    DB(GBK) => php等(utf8,并將從數(shù)據(jù)庫取出的數(shù)據(jù)轉(zhuǎn)化為utf8) => header(utf8) => html、tpl(utf8)

  只要按照上面這兩種規(guī)范編碼格式,就不會出現(xiàn)亂碼情況,起碼我測試的第一種方式是沒問題的,所以我猜第二種也ok,好了,現(xiàn)在就來寫一個轉(zhuǎn)換文件編碼格式的小腳本:

#!/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 "[轉(zhuǎn)換失敗:]"+_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:"第一個參數(shù)不是一個有效的文件夾",3:"源編碼和目標(biāo)編碼相同",2:"您要轉(zhuǎn)化的編碼不再范圍之內(nèi):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)

  腳本很簡單,使用也很簡單

復(fù)制代碼 代碼如下:

  ./changeEncode.py target_dir fromEncode toEncode

這里要注意下,幾種常見編碼的關(guān)系:

  us-ascii編碼是utf-8編碼的一個子集,這個是從stackoverflow上得到的,原文如下ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded,

我試了下確實是的,在不加漢字的時候顯示編碼為us-ascii,加了漢字之后,變?yōu)閡tf-8。

  還有就是ASNI編碼格式,這代表是本地編碼格式,比如說在簡體中文操作系統(tǒng)下,ASNI編碼就代表GBK編碼,這點還需要注意

  還有一點就是一個在linux下查看文件編碼格式的命令是:

復(fù)制代碼 代碼如下:

file -i *

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

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

以上就是本文所述的全部內(nèi)容了,希望對大家學(xué)習(xí)python能夠有所幫助。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

相關(guān)文章

  • python使用arp欺騙偽造網(wǎng)關(guān)的方法

    python使用arp欺騙偽造網(wǎng)關(guān)的方法

    這篇文章主要介紹了python使用arp欺騙偽造網(wǎng)關(guān)的方法,涉及Python偽造網(wǎng)關(guān)的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Django項目創(chuàng)建及管理實現(xiàn)流程詳解

    Django項目創(chuàng)建及管理實現(xiàn)流程詳解

    這篇文章主要介紹了Django項目創(chuàng)建及管理實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Python 統(tǒng)計列表中重復(fù)元素的個數(shù)并返回其索引值的實現(xiàn)方法

    Python 統(tǒng)計列表中重復(fù)元素的個數(shù)并返回其索引值的實現(xiàn)方法

    這篇文章主要介紹了Python 統(tǒng)計列表中重復(fù)元素的個數(shù)并返回其索引值,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • Python Image模塊基本圖像處理操作小結(jié)

    Python Image模塊基本圖像處理操作小結(jié)

    這篇文章主要介紹了Python Image模塊基本圖像處理操作,結(jié)合實例形式總結(jié)分析了Python圖形處理模塊Image常用的圖形處理函數(shù)、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2019-04-04
  • 你應(yīng)該知道的Python3.6、3.7、3.8新特性小結(jié)

    你應(yīng)該知道的Python3.6、3.7、3.8新特性小結(jié)

    這篇文章主要介紹了你應(yīng)該知道的Python3.6、3.7、3.8新特性小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Win10系統(tǒng)下Pytorch環(huán)境的搭建過程

    Win10系統(tǒng)下Pytorch環(huán)境的搭建過程

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Win10系統(tǒng)Pytorch環(huán)境搭建過程展開,文中有非常詳細的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • 有趣的python小程序分享

    有趣的python小程序分享

    這篇文章主要介紹了有趣的python小程序分享,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • Python實現(xiàn)12306自動搶火車票功能

    Python實現(xiàn)12306自動搶火車票功能

    一到國慶、春節(jié)這種長假,搶火車票就非常困難?各大互聯(lián)網(wǎng)公司都推出搶票服務(wù),只要加錢給服務(wù)費就可以增加搶到票的幾率。本文將和你一起探索搶票軟件背后的原理。
    2021-12-12
  • python實現(xiàn)馬丁策略回測3000只股票的實例代碼

    python實現(xiàn)馬丁策略回測3000只股票的實例代碼

    這篇文章主要介紹了python實現(xiàn)馬丁策略回測3000只股票,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 淺析pandas隨機排列與隨機抽樣

    淺析pandas隨機排列與隨機抽樣

    這篇文章主要介紹了pandas隨機排列與隨機抽樣的相關(guān)資料,幫助大家更好的利用pandas進行數(shù)據(jù)分析,感興趣的朋友可以了解下
    2021-01-01

最新評論

密云县| 宿州市| 九龙县| 昌吉市| 双峰县| 榆中县| 饶阳县| 通榆县| 安溪县| 邓州市| 泰安市| 科技| 浑源县| 宁陕县| 小金县| 全州县| 修武县| 濉溪县| 广宗县| 榆中县| 南召县| 东城区| 庆云县| 五原县| 安顺市| 许昌市| 博湖县| 荣成市| 隆化县| 全州县| 英超| 东源县| 当涂县| 巴青县| 阿城市| 扶风县| 淳化县| 陈巴尔虎旗| 金昌市| 收藏| 枣强县|