Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

キーボードから入力を受ける命令・文字化け・入門者

JDKでキーボードから入力を受ける命令をしたのですが、実行し、ターミナルでひらがなの文字を入力すると?????と表示されます。UTF-8にしてみたのですが、そうすると他のprintlnの命令まで文字化けしてしまいます。

ご教示ください。

public class Mondai2_3 {
    public static void main(String[] args)
    {
        System.out.println("ようこそ占いの館へ");
        System.out.println("あなたの名前を入力してください。");
        String name = new java.util.Scanner(System.in).nextLine();
        System.out.println("あなたの年齢を入力してください。");
        String ageString = new java.util.Scanner(System.in).nextLine();
        int age = Integer.parseInt(ageString);
        int fortune = new java.util.Random().nextInt(3);
        fortune = fortune + 1;
        System.out.println("占いの結果が出ました!");
        System.out.println(age + "歳の" + name + "さん、あなたの運気番号は" + fortune + "です。");
        System.out.println("1:大吉2:中吉3:吉4:凶");
        
    }
    
}



<ターミナル>
PS C:\Users\shiori\Desktop\MyJava> javac Mondai2_3.java
PS C:\Users\shiori\Desktop\MyJava> java Mondai2_3      
ようこそ占いの館へ
あなたの名前を入力してください。
はる 
あなたの年齢を入力してください。
22
占いの結果が出ました!
22歳の???さん、あなたの運気番号は3です。
1:大吉2:中吉3:吉4:凶

<ターミナル2>
Active code page: 65001
PS C:\Users\shiori\Desktop\MyJava> javac Mondai2_3.java
PS C:\Users\shiori\Desktop\MyJava> java Mondai2_3      
繧医≧縺薙◎蜊?縺・・鬢ィ縺ク
縺ゅ↑縺溘・蜷榊燕繧貞・蜉帙@縺ヲ縺上□縺輔>縲・

2

回答

123

閲覧

2件の回答

評価

0

Windowsのコマンドプロンプトは、標準ではUTF-8ではなくMS932(Windows-31J)で動いている。

評価

0

いや、それだけじゃ無理だな。
System.inはInputStream(要するにbyte[])なので、それをどういう文字コードと考えるかの情報が必要になる。
Scanner(InputStream)のコンストラクタは、それを指定していない。そのためCharset.defaultCharset()を使う。
これが実際のコマンドプロンプトと、合っていないわけだ。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名