現在位置: ホーム 清水川記 文字コード判定して一括でuft-8に変換するPythonスクリプト
ドキュメントアクション

文字コード判定して一括でuft-8に変換するPythonスクリプト

utf-8でのHTML作成を依頼したらEUC-JPで送られてきたので自分で変換してしまう。findとnkfを組み合わせれば良いんだろうけど、とりあえず手元にWindowsしか無かったんでPythonで作ってしまった。

カレントディレクトリ以下のテキストと思われるファイルを全てutf-8に変換する。文字コード判定というかトライ&エラー方式。 バイナリファイルは変換に失敗したらskipするという手法。画像ファイルなんかはまあ大丈夫だろうけど、誤変換しない保証はない。・・・怖。

import os, sys

def guess_charset(data):
    
f = lambda d, enc: d.decode(enc) and enc

    
try: return f(data, 'utf-8')
    
except: pass
    
try: return f(data, 'shift-jis')
    
except: pass
    
try: return f(data, 'euc-jp')
    
except: pass
    
try: return f(data, 'iso2022-jp')
    
except: pass
    
return None

def conv(data):
    
charset = guess_charset(data)
    
u = data.decode(charset)
    
return u.encode('utf-8')

for dirpath, dirs, files in os.walk(os.getcwd()):
    
for fn in files:
        
path = os.path.join(dirpath, fn)
        
fobj = file(path, 'rU')
        
data = fobj.read()
        
fobj.close()
        
try:
            
data = conv(data)
        
except:
            
print path, "-> skip"
            
continue
        
fobj = file(path, 'wU')
        
fobj.write(data)
        
fobj.close()
        
print path, "-> converted"
カテゴリ
python python
トラックバック用URL:
http://www.freia.jp/taka/blog/571/tbping

Re:文字コード判定して一括でuft-8に変換するPythonスクリプト

投稿者: jack 投稿日時: 2008年05月20日 13時31分

うぁ、.orig とか残さなくていいの?
まぁ、オリジナルのzip とかあるんでしょうけど。

Re:文字コード判定して一括でuft-8に変換するPythonスクリプト

投稿者: しみずかわ 投稿日時: 2008年05月20日 14時00分

> うぁ、.orig とか残さなくていいの?

まあそれはフルコピーがある前提で。。

[Python][Mercurial]巡回

投稿者: 常山日記 投稿日時: 2008年05月20日 18時11分
GoogleのソースレビューシステムMondrianのオープンソース版「Rietveld」 CherryPy 3.1.0rc1 PyFileMaker 2.5 pyRuby-Python-Bridge 1.5 bzr 1.5 文字コード判定して一括でuft-8に変換するPythonスクリプト [python] sitecustomize.pyを設定しない運動その1(Pythonで日本語
コメントを追加

下のフォームに記入してコメントを追加することができます。プレーンテキスト形式。

(必須)
(必須)
(必須)