Java から log4j でログ流してたら日本語が全部 ?
になったのでなんでや文字化けかいな!となるなどした。
デスクトップなど GUI の表示言語
スタートメニューから language
と入力して開ける言語のページから、日本語を追加して他の言語を削除します。
削除しなくてもいいんだけど、どうせ利用しないし混乱の元になるので僕は削除するようにしています。
これだけだと Java (log4j) 経由で吐き出すログがぶっ壊れます。なので追加で以下の対応をします。
Windows のロケール設定
上記の言語画面から引き続き、関連設定 → 管理用の言語の設定 → [管理] タブ → Unicode 対応ではないプログラムの言語 → システム ロケールの変更 と遷移します。
現在のシステム ロケールを 日本語 (日本)
に変更したら OS 再起動が必要なので再起動します。
これでオッケー!
ただし、システムロケール変更前に作成したファイルは UTF-8 になってるっぽく。ここに日本語ロケールの文字を出力すると SJIS で吐き出されるので、ファイルが壊れます (壊れました)。
エンコード変更しても修復できず、「しかしメモ帳だと SJIS で出力された日本語が読める」という状態だったので、同じような状態であれば素直にログファイルを作り直した方がよいでしょう。 もちろん、ログファイル作り直せない!という事情がある場合は、必ずメモ帳で開くとすれば運用回避できます。リスク保有的な考え方なのであんまよくはないです……(しょんぼり)。
Linux だと/etc/locale.conf
とかで管理されていると思うんですが、「Windows って上記の言語設定したらそれで終わりじゃない、ってこと!?」とハチワレみたいな顔になりましたね。Windows 全然わからん。
発生する要因について
こういうことらしい。 Java おまえ……となってしまった。