実現したいこと
jarを実行した時の文字化けを解消する
前提
DiscordのBotをjava言語で作っています。
jarにコンパイルしてからbatファイルでコンソールを起動し、実行してます。
発生している問題
コンソールから日本語を入力すると、日本語が文字化けしてしまいます。
以下コンソール出力
> コマンドを入力してください。 send [チャンネルID] [メッセージ] send [チャンネルID] ????????
sendコマンドを自作し、実行しています。
これはチャンネルIDとメッセージを引数に入力すると、指定したチャンネルに特定のメッセージを送信するコマンドです。
現在はデバッグのログ出力でコマンドの文字列をそのまま出力していますが、この時点で文字化けが発生しています。
該当のソースコード
javaのbotクラス
java
1// スキャナー定義 2private final Scanner scanner = new Scanner(System.in, StandardCharsets.UTF-8); 3 4// 以下はコマンド入力を待ち、受け付けるメソッド 5public void awaitInput() { 6 System.out.println("> コマンドを入力してください。"); 7 String input = scanner.nextLine(); 8 9 System.out.println(input); 10 11 // 入力された文字列をコマンドに変換 12 Command command = new Command(input); 13 14 // コマンド実行 15 command.execute(); 16}
build.gradle.kts
gradle.kts
1plugins { 2 java 3} 4 5group = "GROUP_ID" 6version = "VERSION" 7 8repositories { 9 mavenCentral() 10} 11 12dependencies { 13 inplementation("net.dv8tion:JDA:5.0.0-beta.6") 14} 15 16tasks { 17 withType<JavaCompile>().configureEach { 18 options.encoding = "UTF-8" 19 } 20} 21 22val jar by tasks.getting(Jar::class) { 23 duplicatesStrategy = DuplicatesStrategy.EXCLUDE 24 25 manifest { 26 attributes["Main-Class"] = "メインクラスのパス" 27 } 28 29 configurations["runtimeClasspath"].forEach { file: File -> 30 from(zipTree(file.absoluteFile)) 31 } 32}
batファイル
bat
1@echo off 2java -jar DiscordBot-Version.jar 3pause
試したこと
gradleのタスクでエンコーディングをUTF-8に設定しました。
javaのScannerクラスの文字コードをUTF-8にしました。
batファイルのjavaコマンドの引数に-Dfile.encoding=UTF-8
と-Dconsole.encoding=UTF-8
を書きました。
コマンドプロンプトの文字コードをchcpで65001(UTF-8)に設定しました。
回答1件
あなたの回答
tips
プレビュー