こんにちは!佐野です。Javaの勉強をしており、私が学んだことを共有できればと思います。
文章の読みにくい所や理解の間違い等、ご指摘・アドバイスを頂ければ幸いです。
使用しているツール
- Visual Studio Code
- Java11 ( JDK "11.0.9.1" )
- OS : Windows10
コンパイル時に文字化けをさせない対応について学んだので、紹介します。
早速、このコードをコマンドラインからコンパイル、実行してみたいと思います。
期待する出力は x+yは15
です 。
public class Main {
public static void main (String[] args) {
int x = 5;
int y = 10;
String ans = "x+yは"+(x+y) ;
System.out.println(ans);
}
}
まずは文字化けする例を見てみましょう。コンパイルして...
javac Main.java
実行すると...
java Main
> x+y縺ッ15
文字化けしてしまいました。
今度はコンパイル時にもとのコマンドに少し追加しました。
javac -encoding UTF-8 Main.java
実行すると...
java Main
> x+y縺ッ15
今度は期待通り出力されました!
なぜ-encoding UTF-8
が必要かというと、VSCodeの設定にありました。
VS Code のターミナルはシェルからの UTF-8 エンコードされたデータしかサポートしていないため、環境変数 $LANG を UTF-8 準拠のオプションとして検出して設定するかどうかを制御します。
VSCode Setting より引用
また、Windowsは基本 Shift-JISコードのテキストファイルしか扱えません。
Windows環境で作った日本語入りのJavaのソースファイルをLinux環境でコンパイルしたらエラーになった
https://www-tlab.math.ryukoku.ac.jp/wiki/?Graphics/FAQ#v4beed7f
まとめ
VSCodeのコマンドからJavaのソースコードをコンパイルするときには -encoding UTF-8
と書き加える必要がある。
読んでいただいてありがとうございました。
Happy coding!! 😄✨