質問するログイン新規登録

回答編集履歴

2

表現を修正

2021/02/06 08:54

投稿

Daregada
Daregada

スコア11992

answer CHANGED
@@ -1,7 +1,9 @@
1
- コマンドプロンプトのコードページ設定と、javacが出力する文字列のエンコーディングが食い違っているため。
1
+ 原因: コマンドプロンプトのコードページ設定と、javacが出力する文字列のエンコーディングが食い違っているため。
2
2
 
3
- 環境変数JAVA_TOOL_OPTIONSに`-Dfile.encoding=UTF-8`が設定されているため、javacのコマンドラインオプション`-J-Dfile.encoding=UTF-8`が指定された状態になり、UTF-8エンコーディングされた使用方法(日本語を含む)が表示されます。
3
+ 詳細な説明: 環境変数JAVA_TOOL_OPTIONSに`-Dfile.encoding=UTF-8`が設定されているため、javacのコマンドラインオプション`-J-Dfile.encoding=UTF-8`が指定された状態になり、UTF-8エンコーディングされた使用方法(日本語を含む)が表示されます。
4
4
 
5
5
  コマンドプロンプトのコードページが既定値(932)のまま、UTF-8エンコーディングされた文字列を表示しているために文字化けしています。
6
6
 
7
+ 対策: 2つの方法のうち、どちらか片方だけを使えば、文字化けしないで結果が見られます。
7
- `chcp 65001`を実行して、コマンドプロンプトのコードページを65001(UTF-8)にしてからjavacを実行するかコマンドプロンプトのコードページは932(MS932)のままで`javac -J-Dfile.encoding=MS932`とすれば、文字化けないで結果が見られます。
8
+ (方法1) コマンドプロンプトで`chcp 65001`を実行してEnterキーを押し、コマンドプロンプトのコードページを65001(UTF-8)にしてから、`javac`と入力てEnterキーを押す。
9
+ (方法2) コマンドプロンプトのコードページ(932)はそのまま変更しない。`javac -J-Dfile.encoding=MS932`と入力してEnterキーを押す。つまり、JAVA_HOME_OPTIONSの設定を上書きする。

1

誤字を修正

2021/02/06 08:54

投稿

Daregada
Daregada

スコア11992

answer CHANGED
@@ -4,4 +4,4 @@
4
4
 
5
5
  コマンドプロンプトのコードページが既定値(932)のまま、UTF-8エンコーディングされた文字列を表示しているために文字化けしています。
6
6
 
7
- `chcp 65001`を実行して、コマンドプロンプトのコードページを65001(UTF-8)にしてからjavabを実行するか、コマンドプロンプトのコードページは932(MS932)のままで`javac -J-Dfile.encoding=MS932`とすれば、文字化けしないで結果が見られます。
7
+ `chcp 65001`を実行して、コマンドプロンプトのコードページを65001(UTF-8)にしてからjavacを実行するか、コマンドプロンプトのコードページは932(MS932)のままで`javac -J-Dfile.encoding=MS932`とすれば、文字化けしないで結果が見られます。