使用しているWinMergeのバージョンによってはUTF-8のファイルを比較する場合は基本的にS-JISで表示するため、日本語の箇所が文字化けして表示される場合があります。
そういう場合はデフォルトの文字コードを変更する事で解消する事が出来ます。
なお、WinMergeでは差分だけを表示して比較を見やすくすることもできます。
一致している行を非表示にすることで、変更された部分だけを効率よく確認できます。

環境
- WinMerge Version 2.14.0.37+-jp-37
文字コードの設定手順
今回はデフォルトコードページをUTF-8に変更する手順をご紹介します。
補足
- 上記で指定した「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 の「無料で日本語に強い」という利点は際立っています。
よくある質問(Q & A)
- WinMergeでUTF-8に変更しても文字化けが直らないのはなぜですか?
-
WinMergeの設定をUTF-8に変更しても文字化けが直らない場合は、比較しているファイル自体が本当にUTF-8ではない可能性があります。
記事内でも、まず ファイルがUTF-8かShift-JISかをエディタで確認することが重要 とされています。さらに、UTF-8のBOM有無やフォントの問題でも表示が崩れることがあります。特に次の点を確認すると改善しやすいです。
- ファイルの実際の文字コードをVS Codeや秀丸などで確認する
- UTF-8(BOMあり/なし)の違いを確認する
- 特殊記号や異体字が含まれていないか見る
- 必要に応じてWinMerge側で文字コードを手動指定して再読み込みする
- WinMergeで設定した文字コードが反映されないときはどうすればいいですか?
-
記事では、設定変更後に反映されない場合の確認点として、管理者権限で起動しているか、古い設定ファイル(WinMerge.ini)が残っていないか、比較対象ファイルがキャッシュされていないか が挙げられています。改善しない場合は、一度設定をリセットして再設定する方法 も有効です。
対処の流れとしては、次の順で確認すると分かりやすいです。
- WinMergeを再起動する
- もう一度「編集」→「設定」→「コードページ」を確認する
- WinMerge.ini など古い設定が残っていないか確認する
- 必要なら管理者権限で起動し直す
- 比較ファイルを再読み込みする
- 文字コードを変更しても不要な差分が出るのはなぜですか?
-
文字コードを合わせても差分が消えない場合は、改行コードの違い が原因のことがあります。記事でも、WindowsはCRLF、LinuxはLF、古いMacはCRなど、環境によって改行コードが異なり、不要な差分として表示されることがある と説明されています。 「改行コードの違いを無視」 を有効にすると、文字コード以外の差分を減らしやすくなります。
そのため、WinMergeで比較するときは文字コードだけでなく、
- UTF-8 / Shift-JIS などの文字コード
- BOMあり/なし
- CRLF / LF などの改行コード
この3点をセットで確認すると、差分確認がかなり安定します。


