使用しているWinMergeのバージョンによってはUTF-8のファイルを比較する場合は基本的にS-JISで表示するため、日本語の箇所が文字化けして表示される場合があります。
そういう場合はデフォルトの文字コードを変更する事で解消する事が出来ます。
環境
- WinMerge Version 2.14.0.37+-jp-37
文字コードの設定手順
今回はデフォルトコードページをUTF-8に変更する手順をご紹介します。
- メニューから「編集」⇒「設定」を選択します。
- オプション画面で「コードページ」を選択し、デフォルトコードページで「カスタムコードページ」を選択し、「65001 – Unicode(UTF-8)」を選択して「OK」ボタンを選択します。
補足
- 上記で指定した「65001」というのは文字コード番号を表します。
一般的に使用されるコードは以下の通りです。
文字コード番号 文字コード 932 SHIFT-JIS 20932 EUC-JP 65001 UTF-8
※文字コード番号の詳細については下記ページが参考になります。
Microsoft Code Page Identifiers -
UTF-8のBOM有無
UTF-8には「BOMあり/なし」の2種類があり、環境やソフトによってはBOM付きファイルで文字化けや差分検出の誤認が発生する場合があります。必要に応じて保存形式を確認してください。 -
改行コードの違い
Windows(CRLF)、Linux(LF)、古いMac(CR)などで改行コードが異なるため、WinMerge上では不要な差分として表示されることがあります。設定で「改行コードの違いを無視」を有効にすると便利です。 -
フォントの問題
日本語環境でもフォントによってはUnicodeの一部が表示できず「□」に化ける場合があります。異体字や特殊記号が含まれる場合は注意してください。 -
文字コードの見極め
比較対象のファイルが本当にUTF-8かSJISかなどを確認することが重要です。エディタ(VS Codeや秀丸など)で文字コードを明示的に確認すると確実です。 -
バージョン差異
WinMergeのバージョンによって設定画面やコードページ指定方法が異なることがあります。環境に合わせた確認をおすすめします。 -
代替ツールの活用
WinMergeで対応が難しい場合、Beyond Compare、Meld、kdiff3など他の比較ツールを利用するのも有効です。特に大規模な差分確認やUnicode依存の環境では効果的です。 - ファイルごとの文字コード指定
通常は「ツール」→「コードページ」から全体設定を変更しますが、比較画面で 個別のファイルに文字コードを指定して再読み込み することも可能です。
特定のファイルだけが文字化けしている場合に便利です。 - 自動判定とBOM付きファイル
WinMerge は基本的に文字コードを自動判定しますが、以下のようなケースでは誤判定が起きやすいので注意が必要です。
-
UTF-8 with BOM と UTF-8 without BOM の区別
-
Shift-JIS と EUC-JP の曖昧さ
-
絵文字や合成文字を含む場合
文字化けが発生した場合は、手動で文字コードを選び直すと解消することがあります。
-
- 改行コードとの関係
Git などの外部ツールと連携する場合は、改行コード(CRLF / LF)の違いにも注意が必要です。
WinMerge の設定で「改行コードの無視」を有効化すれば、文字コード以外の差分を最小限に抑えて比較できます。 - 設定が反映されない場合
文字コードの設定を変更しても反映されない場合は、以下を確認してください。
-
管理者権限で WinMerge を起動しているか
-
古い設定ファイル(WinMerge.ini)が残っていないか
-
比較対象のファイルがキャッシュされていないか
一度設定をリセットしてから再設定すると改善することがあります。
-
- 他ソフトとの比較
文字コード周りの扱いは差分ツールごとに特徴があります。
たとえば Beyond Compare は自動判定精度が高い一方で有料版が中心、Meld はオープンソースですが日本語処理に弱いなど、WinMerge の「無料で日本語に強い」という利点は際立っています。