質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

4回答

5528閲覧

Javaで全角で入力した文字が表示できない

Fsho

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2020/06/04 14:52

編集2022/01/12 10:55

起きている問題

最近javaの勉強を始めた者です。

入力した文字を表示させるだけの簡単なコードを作成し、実行したのですが
日本語入力だけうまく表示されません。
例えば「abcd」といった半角の英数字ならば表示されるのですが、「あいうえお」といった全角の文字は空白で表示されてしまいます。

java

1import java.util.Scanner; 2public class k4_3 { 3 public static void main(String[] args){ 4 Scanner sc=new Scanner(System.in); 5 String str=sc.next(); 6 System.out.println(str); 7 sc.close(); 8 } 9}

「あいうえお」と入力するとこのように空白になってしまいます。
イメージ説明

よろしくおねがいします。

開発環境

  • OS windows10
  • エディター Visual Studio Code(下のサイトを参考に環境構築)

リンク内容

ターミナルを変更しようとするが...

ターミナルをpowershellからコマンドプロンプトに変更しようとしましたが、
パスを入力する部分が見当たりませんでした。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/06/04 15:01 編集

ソースと画像が違うようですが? System.out.println(str);? System.out.printf("%s",str);?
Fsho

2020/06/04 15:09

申し訳ありません。間違いでしたので画像を変更しました。 けれど、どちらで試しても結果は同じでした。
guest

回答4

0

hope_mucciさんの回答で、ほぼいけると思いますが、たぶん環境変更が必要かと。

今回の件はpowershellのutf-8が日本語領域を扱えずに全部\0に変換する

らしいので、terminalを変更してください。

【Windows】Visual Studio CodeにおいてターミナルをPowershellからコマンドプロンプトに変更する

PSを使う場合は、

lunch.jsonに"encoding": "SJIS"
を追加してみてください。
java コマンドのオプションに'-Dfile.encoding=Shift_JIS'になっていれば、大丈夫です。

投稿2020/06/05 04:51

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/05 05:12 編集

コマンドプロンプトもPSと同じで"encoding": "SJIS"を加えないと上手く入力できないですね。
momon-ga

2020/06/05 05:30

あら。動作確認が雑でしたね。ご指摘ありがとうございます。
Fsho

2020/06/05 05:33

回答ありがとうございます。 手順通りコマンドプロンプトに変更しようとしましたが、上に追記で書いたとおりパスをかく場所がみあたりませんでした。settings.jsonというのを編集しなければならないのでしょうか?
momon-ga

2020/06/05 05:46

ごめんなさい。あまり詳しくないので・・・ ググった方が早いかと思います。 私は、terminal Explorer kind を external にしただけです。
guest

0

とりあえず根本対策ではないですが、対症療法的な対策を。
コンソールの文字コードをsjisのままにさせます。

デバッグ実行時に実行コマンドがターミナルに流れますが、それの一番最初のコマンドC:\{略}\launcher.batにマウスカーソルを合わせ、Ctrl+クリックします。
するとこのlauncher.batがエディタで開けます。
開いたら4行目にある@chcp.com 65001 > NUL をコメントアウトしてください。

bat

1@echo off 2 3REM Change code page to UTF-8 for better compatibility. 4rem @chcp.com 65001 > NUL 5 6REM Execute real command passed by args 7%*

こうなるはず。

launcher.batを保存して、ターミナルを一度強制終了します(右側ゴミ箱マーク)。
その後、もう一度javaのデバッグ実行を行うとsjisで文字入力を行うことができます。
質問のコードでも正常に文字入力、出力できることを確認しました。

投稿2020/06/04 17:27

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momon-ga

2020/06/05 04:15

かなり、良い線いってる気がするけど、うちの環境だと文字化けしますね。 > aiうえo > ai????o settings.json とかに設定いれてます?
momon-ga

2020/06/05 04:30 編集

あ、わかったかも lunch.jsonに "encoding": "SJIS" が、入ってませんか? というか入れると、java コマンドのオプションに '-Dfile.encoding=Shift_JIS' と、UTF-8から変更されて、コンソール入力した全角文字が化けなくなりました。
hope_mucci

2020/06/05 04:29

私は限りなくバニラなvscodeで試しました。質問者の環境ならそこまでしなくても良いかと思いますが、文字に'?'が混じっていたらその設定も確認する必要があるでしょうね。 今回の件はpowershellのutf-8が日本語領域を扱えずに全部\0に変換するウンコンパチビリティ仕様が原因なので空白(正確には\0になってる)に見えています。
退会済みユーザー

退会済みユーザー

2020/06/05 06:12 編集

デフォルトだと'-Dfile.encoding=UTF-8'が実行されて文字化けしてしまうので、launch.jsonに"encoding": "SJIS"を加えて'-Dfile.encoding=Shift_JIS'に変更するのは必要だと思います。 私もmomon-gaさんと同じでlaunch.jsonに"encoding":"SJIS"を加えたら上手くいきました。
guest

0

まだ未解決ですが、(現在は解決済み)私が色々と試したこと、調べたことが書いてあるのでもしかしたら参考になるかもしれません。
Javaの標準入力で日本語が半角スペースになってしまう。|teratail
今のところこれといった解決策はなさそうなので、どうしても日本語入力がしたいならeclipseなど他のIDE、エディタを使った方が良さそうです。
hope_mucciさんの方法で上手くいけそうです。

投稿2020/06/04 16:57

編集2020/06/05 15:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答ではありませんが、IntelliJ IDEAでは正常に実行できました。

IntelliJ
実行結果

投稿2020/06/04 15:43

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問