信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Eclipseの文字化け・エンコーディング問題を完全解決する
Eclipseで日本語が文字化けする原因と解決方法。ワークスペース・プロジェクト・ファイル単位でのUTF-8設定、コンソール文字化け対策を解説します。
一言結論
Eclipseの文字化けはワークスペース・プロジェクト・ファイルの三層構造でエンコーディングが設定されており、まずワークスペース全体をUTF-8にするのが最優先の対処だ。
文字化けが起きる原因
Eclipse での文字化けは、複数の階層でエンコーディングが設定されており、それが食い違うときに発生します。
ワークスペース設定
└── プロジェクト設定
└── ファイル単位の設定
1. ワークスペース全体のエンコーディングを変更
Window > Preferences > General > Workspace
Text file encodingをOther: UTF-8に変更
これが最も重要です。 新規プロジェクトはこの設定を継承します。
2. プロジェクト単位の設定
既存プロジェクトがあるフォルダ直下の .settings/org.eclipse.core.resources.prefs に:
eclipse.preferences.version=1
encoding/<project>=UTF-8
または Eclipse から:
プロジェクト右クリック → Properties → Resource
→ Text file encoding → Other: UTF-8
3. ファイル単位の設定
特定のファイルのエンコーディングを変更:
ファイルを右クリック → Properties → Resource
→ Text file encoding → Other: UTF-8 または Shift_JIS
4. コンソールの文字化け
実行時にコンソールの日本語が化けている場合:
実行設定でエンコーディングを指定
Run > Run Configurations > Common タブ
→ Encoding → Other: UTF-8
JVMオプションで指定
VM Arguments に追加:
-Dfile.encoding=UTF-8
-Dstdout.encoding=UTF-8
eclipse.ini に追加(Eclipse 自体のエンコーディング)
-Dfile.encoding=UTF-8
eclipse.ini は Eclipse のインストールフォルダにあります。
5. Tomcat(サーブレット)の文字化け
Run > Run Configurations > Apache Tomcat > Arguments
VM Arguments に追加:
-Dfile.encoding=UTF-8
6. Maven でのエンコーディング設定
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
7. .properties ファイルの文字化け
Java の .properties ファイルは本来 ISO-8859-1 です。Eclipse はデフォルトでこの仕様に従うため、日本語が \u30BF\u30B9\u30AF のような Unicode エスケープで保存されます。
解決策1: UTF-8 で保存して Properties Encoding を変更
Preferences > General > Content Types
→ Text > Java Properties File
→ Default encoding: UTF-8
解決策2: ResourceBundle UTF-8 Control を使う(Java 9以降)
// Java 9以降は UTF-8 がデフォルト
ResourceBundle bundle = ResourceBundle.getBundle("messages");
解決策3: Spring の場合
# application.properties
spring.messages.encoding=UTF-8
8. Git との兼ね合い
.gitattributes でテキストファイルの改行コードを統一:
# .gitattributes
* text=auto eol=lf
*.java text eol=lf
*.properties text eol=lf
既存ファイルの一括変換
Eclipse では既存ファイルのエンコーディング変換ができませんが、コマンドラインで変換できます:
# Shift_JIS → UTF-8 に変換(iconv を使う)
find . -name "*.java" -exec iconv -f SJIS -t UTF-8 {} -o {}.utf8 \; -exec mv {}.utf8 {} \;
# nkf を使う(日本語環境でより信頼性が高い)
find . -name "*.java" | xargs nkf -w --overwrite
チェックリスト
- ワークスペースのエンコーディングが UTF-8 か
- プロジェクトのエンコーディングが UTF-8 か
-
eclipse.iniに-Dfile.encoding=UTF-8を追加したか - 実行設定のエンコーディングが UTF-8 か
-
pom.xmlにsourceEncodingを設定したか
まとめ
文字化けの解決は「ワークスペース → プロジェクト → 実行設定」の順に確認します。新規プロジェクトを作る前にワークスペースを UTF-8 に設定しておけば、多くの問題は最初から防げます。