前提
Windows 10のJava 19でキーボードから文字列を入力し、画面に出力させるシステムを作っています。
コンパイルでき、プログラムを実行中に半角の文字列は出力できるのですが、全角の文字列は文字化けが発生しました。
テキストエディタ:Sublime Text 3
コマンドプロンプト
実現したいこと
- 全角の文字列も文字化けせずに出力する
発生している問題・エラーメッセージ
C:\YJSample\03>javac Sample4.java C:\YJSample\03>java Sample4 文字列を入力してください。 ohayou ohayouが入力されました。 C:\YJSample\03>java Sample4 文字列を入力してください。 おはよう ����が入力されました。
該当のソースコード
Java
1import java.io.*; 2 3class Sample4 4{ 5 public static void main(String[] args) throws IOException 6 { 7 System.out.println("文字列を入力してください。"); 8 9 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 11 String str = br.readLine(); 12 13 System.out.println(str + "が入力されました。"); 14 } 15}
試したこと
コマンドプロンプトのコードページを65001(UTF-8)にし、テキストエディタの文字コード(UTF-8)と同じくしたのですが、それでも文字化けが発生しました。
またWindows PowerShellでも同様に実行したところ、他の文字列も文字化けが発生しました。
追加情報
Javaプログラムが書かれたファイル自体の文字コードは何でしょう。
メモ帳にUTF-8と書かれています
コマンドプロンプトのコードページをShiftJISにしたらどうなるでしょう
コマンドプロンプトでは同く全角の文字列だけが文字化けします。
コマンドプロンプトのフォントは、何を設定されていますか?
M S ゴシックです。
>メモ帳にUTF-8と書かれています
画面キャプチャ提示いただけますか?
ただ、プログラミングをメモ帳で行うのはかなりの悪手なので、
諸々含めるときちんとプログラミングに適したツールを使われたほうが良いと思います。
今回のような「本来止まる場所ではない場所で止まる」ことがなくなります。
>M S ゴシックです。
手元のWindows10にて確認しましたが、M S ゴシックが正常に設定されている場合、カレントパスとして、バックスラッシュ(逆向きの/)ではなく、¥マークが表示されます。
UTF8に設定した状態でのプロパティのフォント設定を再確認することをお勧めします。
また、プログラムを介さず、入力やメモ帳からのコピペなどで、全角文字を表示させた場合、正常に表示されますか?
m.ts10806様へ
メモ帳の画面を追加情報に提示しました。また新しく統合開発環境を使用しようと思います。
YT0014様へ
プログラムをこちらにコピペするときに\からバックスラッシュに変わってしまいました。
また、メモ帳のソースコードをコピーし、コマンドプロンプトにぺーストしたところ、内部コマンドまたは外部コマンドとして認識されないというエラー文を除き、すべての行で文字化けせず、正常に表示されました。
失礼、PowerShellの出力画像と混同していました。
PSでの入力以外の文字化けは、フォント設定で改善されるかと思います。
出力をリダイレクトして、実際の文字コードをご確認いただくのはいかがでしょう?
YT0014様へ
リダイレクトの方法が理解できていないのですが、調べた限り
出力を、java Sample4 >Sample4.java のようにリダイレクトすると、
おはよう
とキーボードで打ち込んだ文字列だけが画面に出力されました。メモ帳側では、
文字列を入力してください。
0000が入力されました。
と表示され、文字コードはANSIでした。
説明不足失礼を。リダイレクトは、その方法です。
出力されたファイルを、バイナリビューアなどで、各文字、特に文字化けしている部分が、どんなコードになっているかを、ご確認いただきたい、という提案でした。
「お」があるはずのコードを見て、各文字コード(セット)と見比べば、入力側の文字コード(セット)が推測できます。
参考までに、各文字コード(セット)の文字コード表。
http://ash.jp/code/unitbl21.htm
YT0014様へ
参考の文字コード表をありがとうございます。各文字はSJISだと分かったのですが、追加情報にもある文字化けしている部分、0について文字コード表と見比べても特定できませんでした。
回答1件
あなたの回答
tips
プレビュー



