ここから本文です

JavaのInputクラスが文字化けします

jun********さん

2012/1/221:09:55

JavaのInputクラスが文字化けします

このごろJavaを始めたんですが、今使ってる本のページからダウンロードしたJava用のInputクラスで、getStringメソッド(っていうんですよね???)をつかったプログラム上で日本語入力をしようとすると文字化けがおきてしまいます

英語入力では問題はおきません。
また、本の中ではちゃんと入力できてます

環境はWinXP
ECLIPSE使用

本の題名は「わかりやすいJava入門編」です


分かりにくい文章ですいません

補足初心者なので、よく分からんですけど
いちおうStringに関するコードらしきところがあるので、のせます(以下コード

}
/**
* コンソールから文字列を入力する
*
* @return 入力した文字列
*/
public static String getString(){

return getString("String");
}
public static String getString(String s){

String str = getStr(s);
if(str.length()==0){
return null;

}else{
return str;
}

閲覧数:
935
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ten********さん

編集あり2012/1/301:57:47

書籍を持っていないので、日本語入力周辺のソースコード展開ください。
おそらく、Win(MS932)からJava(UTF-8)の文字コードで差異が出ているとおもいます。
Input::getString()の中身が不明なので回答しようがないです。
※書籍持っている人のために、頁を教えた方がよいとも思います。

あと、せっかくのeclipseなので、デバッグ実行してみるとどうですか?
どの箇所で化けるかが分かるので、その情報も展開いただけると解決早いと思います。

[追記]
コードはgetStrを見たかったのですが、下記サイトから情報得られました。
http://powercampus.jp/top/javaIntro.html
で、コチラもWinXPのeclipseでやりましたが化けませんでした。

なので、環境面を含めて確認が必要そうですが、まず以下2つのコードを順に試して化けるか確認してください。
これでも化ける場合、どういった手順でコンパイル・実行してるかを知りたいなと。

1)既存メソッド(getStr(String s))にキャラセットつける。
return new String(buf, 0, len - CR_LEN, Charset.forName("MS932"));

2)新規メソッド(getStr2(String s))を用意して、getString(String)メソッドからの呼び出しを変更してみる。
public static String getStr2(String s) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in,
Charset.forName("MS932")));
String str = new String();
try {
guide(s);
str = br.readLine();
} catch (IOException e) {
System.out.println(e);
}
return str;
}
※以下のimport追加になります。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

質問した人からのコメント

2012/1/3 13:20:56

本当に始めたばかりでtenichi_niceさんのおっしゃる事の意味の理解もままならない状態なので、この件に関しては「保留」します
文字化けしてもしばらくは人に見せる予定はないのでかいてあるソースコードの意味が分かるくらいになったらこの回答をヒントにして直してみたいと思います

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる