1
0

More than 3 years have passed since last update.

Javaのエラー「エラー: この文字(0x92)は、エンコーディングwindows-31jにマップできません」を直す

Last updated at Posted at 2021-08-09

JavaをVScodeで記述し,実行する際のエラーを解消した備忘録(CodeRunnerを利用している方向け)

エラー: この文字(0x92)は、エンコーディングwindows-31jにマップできません

このような不快なエラーメッセージが出た.
これはどうやらfilename.javaの中に全角文字が記述されている場合発生するようだった.filename.javaはUTF-8で保存されていた.

UFT-8ではなくShift-Jisで保存すると問題なく同じ動作で実行される(解決策の一つ)

個人的にUFT-8を使いたかったので,どうにかしてそのまま動くようにする.
このとき,使うコーディングに特にこだわりが無い方は,.javaの規定コーディングをShift-Jisに変更することで解決すると思います.
同様のエラーを起こしている人を見つけ対処法が解説されていたのでそのとおりにしてみても消えないが,ターミナルで「javac -encoding UFT-8 filename.java」とすると正常に動作する.

CodeRunnerが元凶

これらから,コンパイルにエラーが発生していることがわかった.このとき,Java Test Runnerの機能の方で実行すると正常に動作する.
これが何を意味するのかというとCodeRunnerがえらっているということ.自分は,cでの実行にShift+ctrl+Nを利用していたため,JavaでもCodeRunnerを使ってコンパイル&実行をしていた.
これらから,setting.jsonの,

"code-runner.executorMap": {
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
}



"code-runner.executorMap": {
"java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
}

とする.-encoding UTF-8javacの後に設定する.
これによりShift+ctrl+Nによる正常な実行を実現できた.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0