JavaのScannerの読み込みで文字化けが起こる現象についてご質問
Javaの超初心者です。
ネットにあるJavaのプログラムの練習問題を解いていたのですが、問題文を起動しようとしたら以下の
エラー文が出ました。
おそらくScannerクラスが入力した文章を読み取るときに文字化けを起こしたと思うのですが、どう対応したらよいかが分かりません。
teratailを初めて使うので至らないところもあるとは思いますが、どなたかご教授願います。
※(以下のプログラムはとりあえず練習問題の形式に従って解いたまでですので、実際のプログラムが実用的かどうかは無視していただきたいと思います。
発生している問題・エラーメッセージ
VScodeのDebug機能でデバッグしようとしたところ Scannerの前の"あなたの年齢を入力してください"までは出力されるが Scannerクラスで年齢を入力したところ、 ---以下デバッグ文--- あなたの年齢を入力してください 22 Evaluation failed because the thread is not suspended. ------ と表示される。 コマンドプロンプトで同プログラムを起動しましたところ Kitasoft-Practice.java:5: エラー: この文字(0x81)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ョ蟷エ鮨「繧貞?・蜉帙@縺ヲ縺上□縺輔>"); ^ Kitasoft-Practice.java:5: エラー: この文字(0x85)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ョ蟷エ鮨「繧貞?・蜉帙@縺ヲ縺上□縺輔>"); ^ Kitasoft-Practice.java:8: エラー: この文字(0x81)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ッ縺翫h縺?" + age*365 + "譌・逕溘″縺ヲ縺?縺セ縺?"); ^ Kitasoft-Practice.java:8: エラー: この文字(0x9D)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ッ縺翫h縺?" + age*365 + "譌・逕溘″縺ヲ縺?縺セ縺?"); ^ Kitasoft-Practice.java:8: エラー: この文字(0x84)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ッ縺翫h縺?" + age*365 + "譌・逕溘″縺ヲ縺?縺セ縺?"); ^ Kitasoft-Practice.java:8: エラー: この文字(0x99)は、エンコーディングwindows-31jにマップできません System.out.println("縺ゅ↑縺溘?ッ縺翫h縺?" + age*365 + "譌・逕溘″縺ヲ縺?縺セ縺?"); と表示されru.
該当のソースコード
Java
1import java.util.Scanner; 2class Main{ 3 public static void main(String args[]){ 4 5 System.out.println("あなたの年齢を入力してください"); 6 Scanner scanner = new Scanner(System.in,"utf-8"); 7 int age = scanner.nextInt(); 8 System.out.println("あなたはおよそ" + age*365 + "日生きています"); 9 scanner.close(); 10 } 11}
試したこと
Scannerクラスの中に、エンコードに"utf-8"の指定。
Powershellの文字コードをutf-8に設定。
追記
vscodeのエンコード文字をutf-8に設定
補足情報(FW/ツールのバージョンなど)
使用コードエディタ visual Studio Code
java -version : openjdk version "11.0.3"
javac javac 11.0.3
回答1件
あなたの回答
tips
プレビュー