質問: pb0.start(); //これが文字化け System.out.println("あああ"); new Scanner(System.in).next(); //これは正常に表示される System.out.println("hi"); p.onExit(); } catch (IOException e) { e.printStackTrace(); } } } ``` ### プログラムの完成系のイメージ 上記のソースコードからjarファイルを作成 ↓ exewarpを使用してexeにする ↓ そのexeファイルをダブルクリックして起動したときに文字コードが932に変更され、日本語を表示できるようにする。 ### 試したこと jarファイルまたはexeファイルをcmd上から文字コードを932に変更してから起動→日本語は文字化けしない ProcessBuilderのコマンドを入れ替えたり、付け足したりしてみる new ProcessBuilder("cmd", "chcp", "932"); → 文字コード変更できず、文字化け new ProcessBuilder("cmd", "start", "chcp", "932"); → 文字コード変更できず、文字化け new ProcessBuilder("chcp", "932", "cmd"); → エラーが出て強制終了(知ってた...) new ProcessBuilder("cmd", "chcp", "932", "cmd"); → 文字コード変更できず、文字化け ### 環境 OS:Windows10 開発環境: IntelliJ IDEA 2020.3(jarもこれで自動生成されるやつを使用) jarからexeへの変換:exewrap 1.6.4 java version:java 11.0.9 ### 補足 exeに変換しないで直接jarをダウるクリックすると一瞬cmdの黒い画面が表示されるが、すぐに消えてしまうため動かない。(java.exeを使用) exeに変換するとcmdの黒い画面が表示され、日本語は文字化けしているが「あああ」や入力、「hi」を確認できる ### 補足2 Javaソースコードの文字コードは「UTF-8」です IntelliJに頼らず、cmdからコンパイルをするときは ``` javac -encoding UTF-8 Main.java jar cfm Main.jar Main Main.class ``` でうまくいきます。 ### 補足3 ソースコードに ``` System.out.println(System.getProperty("file.encoding")); ``` を追加して確認したところ、exeファイルから起動される画面の文字コードは「MS932」であることがわかりました。 そのためIntelliJの文字コードの設定を「windows-31j」に変更して再度ビルドしましたがやはり日本語は文字化けしたままでした。
回答: テストしてませんが、`("cmd", "/k", "chcp", "932")`では?