UTF-8なファイルのdiff取ると文字化けする

TortoiseSVN、というかTortoiseMergeの問題。

TortoiseSVNでファイルの差分を取ると、通常であればTortoiseMergeが起動し、そこに差分が表示される。これは大抵の場合うまく動作し、非常にわかりやすいインタフェースを使って差分の検討、およびマージができる。

ところが、対象ファイルがUTF-8エンコードされていると、文字化けしてしまう。どうやら、BOMが入っていないとうまく扱えないようだ。しかし、BOMはUTF-8では挿入は任意になっており、大抵のエディタはUTF-8にしてもこれを入れない。よって、BOMを要求されるのはちょっと面倒である。是非ともBOM無しで対応してほしい。

とにかく、いまのTortoiseMergeではUTF-8にしたファイルを正しく扱えないのだ。しかし、diffは非常に良く使う機能であり、そのまま捨て置けない。ならば、外部ツールだ。

有効なのは、WinMergeの最新版、WinMerge 2.5.3.7+-jp-1であった。これより古いバージョンだとうまく扱えなかったので、新しいものを使う必要があるようだ。

KDiff3も試したが、うまく動かなかった。

Unicodeを利用した環境でも、こうして文字化けの問題に遭遇する。日本人に生まれたことをいくらか後悔する瞬間であるが、解決したのでとにかく良し。



2006/09/18追記

TortoiseSVN 1.4.0から、TortoiseMergeはBOMの有無にかかわらずUTF-8の自動判別を行えるようになった。おかげで文字化け無しで差分を見ることが可能に。

ただし、1.4系ではワーキングコピーのメタデータの書式が変わっているので、1.4で触ったワーキングコピーは1.3では使えなくなる点に注意。