Python を使って文字コード変換
先の投稿 で iconv を使いましたが、 Windows 環境では導入されていませんし、導入するには面倒です。 一方、Mercurial は Python で記述されているのでフィルターだって Python で記述すれば良いのではないかと思い、初めて Python でコードを書きました。cp932 から utf-8 へ変換するコードです。 #!/usr/bin/python import sys ifn = sys.argv[1] ofn = sys.argv[2] open(ofn, 'wb').write(open(ifn, 'rb').read().decode('cp932').encode('utf-8')) 実質一行。 cp932 のテキストファイルを読み込んで、 utf-8 へ変換して出力します。エラー処理なしですが、これだけで済んでしまうのですね。 標準入出力にしなかったのは http://mercurial.selenic.com/wiki/EncodeDecodeFilter に Windows の場合は Tempfile を使った方が良いと書いてあったからです。 この Python スクリプトを使って hgrc を記述しました。 [encode] **.cpp = tempfile: encode.py INFILE OUTFILE **.c = tempfile: encode.py INFILE OUTFILE **.h = tempfile: encode.py INFILE OUTFILE [decode] **.cpp = tempfile: decode.py INFILE OUTFILE **.c = tempfile: decode.py INFILE OUTFILE **.h = tempfile: decode.py INFILE OUTFILE decode.py は上のコード、encode.py は decode.py の逆の変換 (utf-8 から cp932 へ)を行うコードです。 Windows 環境下では逆向きの変換を行えば良いでしょう。 以上です。おつかれさまでした。