
エンジニアになりたい29歳 修行の記録
2024/05/17(Fri) 11日目の日報
Java のデータ型 Java の文字型 (char)の実行中に文字化けする
これが長い長い試練の始まりだった…
※環境:GitBashを導入し、VSコードからBashを使ってます
こんなの出たら初心者泣いちゃうって。
$ javac EncodingChecker.java
EncodingChecker.java:5: エラー: この文字(0x87)は、エンコーディングwindows-31jにマップできません
// 繝?繝輔か繝ォ繝医?ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧貞叙蠕?
^
EncodingChecker.java:5: エラー: この文字(0x81)は、エンコーディングwindows-31jにマップできません
// 繝?繝輔か繝ォ繝医?ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧貞叙蠕?
^
EncodingChecker.java:5: エラー: この文字(0x87)は、エンコーディングwindows-31jにマップできません
// 繝?繝輔か繝ォ繝医?ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧貞叙蠕?
^
EncodingChecker.java:5: エラー: この文字(0x87)は、エンコーディングwindows-31jにマップできません
// 繝?繝輔か繝ォ繝医?ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧貞叙蠕?
^
EncodingChecker.java:5: エラー: この文字(0x97)は、エンコーディングwindows-31jにマップできません
// 繝?繝輔か繝ォ繝医?ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧貞叙蠕?
^
EncodingChecker.java:9: エラー: この文字(0x87)は、エンコーディングwindows-31jにマップできません
// 菴ソ逕ィ蜿ッ閭ス縺ェ蜈ィ縺ヲ縺ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧定。ィ遉コ
^
EncodingChecker.java:9: エラー: この文字(0x87)は、エンコーディングwindows-31jにマップできません
// 菴ソ逕ィ蜿ッ閭ス縺ェ蜈ィ縺ヲ縺ョ譁?蟄励お繝ウ繧ウ繝シ繝?繧」繝ウ繧ー繧定。ィ遉コ
^
エラー7個
わけもわからずChatGPTに突っ込んだ
このエラーメッセージは、JavaコンパイラがEncodingChecker.javaファイルをWindows-31J(CP932)エンコーディングで読み取ろうとして、ファイル内にWindows-31Jにマッピングできない文字が含まれていることを検出したことを示しています。・・・つづく
エンコーディング形式が違うからっぽい…?
JavaはUTF-16ってどっかに書いてあったな…
VSコードの右下UTF-8になってるけどこれか…?
UTF-8を選択「ReOpen With Encording」→UTF-16 BE?LE?
どっちも試してみたができない
半日以上あれこれ試しているとなにがなんやらわからなくなったので
師匠に救助を要請する
エラー解析の手順(いつかQiitaとかでまとめよう…)
①Windowsが悪いのか/GitBashが悪いのか/VSコードが悪いのか切り分けるため、
コマンドプロンプト/GitBash/VSコードの3環境立ち上げる
②超単純な調査用の.javaファイルを作成、それぞれの環境で実行
③それぞれの環境で現在設定されているエンコーディング形式を確認
Linuxはchcp Windowsはchcp.com コマンド
Shift_JISになってたやつはWindows独自環境でならうまくいってる
LANG=en_US.UTF-8になってるところを
LANG="ja_JP.UTF-8"を設定してみたりしたがうまくいかない
最終的にはPCのコントロールパネルにチェックを入れて解決

なんやねんこれ…系解決となりました。
長かったので紆余曲折はいったん割愛。
忘れないうちに今度まとめよう…
解決したのは21時。
1日エラー解析に使うこともあるからね…ドンマイ…と言われたけど
もっと早く頼ればよかったワイ…
にしてもとんちんかんな方向に突き進んでたな。
UTF-16とかまじでなんも関係なかったし
エラー解析はある程度自分でやったら師匠の考え方見せてもらう方が100倍勉強になるので今後そうする