Python を使って文字コード変換
先の投稿 で iconv を使いましたが、 Windows 環境では導入されていませんし、導入するには面倒です。
一方、Mercurial は Python で記述されているのでフィルターだって Python で記述すれば良いのではないかと思い、初めて Python でコードを書きました。cp932 から utf-8 へ変換するコードです。
実質一行。 cp932 のテキストファイルを読み込んで、 utf-8 へ変換して出力します。エラー処理なしですが、これだけで済んでしまうのですね。
標準入出力にしなかったのは http://mercurial.selenic.com/wiki/EncodeDecodeFilter に Windows の場合は Tempfile を使った方が良いと書いてあったからです。
この Python スクリプトを使って hgrc を記述しました。
decode.py は上のコード、encode.py は decode.py の逆の変換 (utf-8 から cp932 へ)を行うコードです。 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 環境下では逆向きの変換を行えば良いでしょう。
以上です。おつかれさまでした。
コメント
コメントを投稿