• ベストアンサー

ファイルから正しい文字が読み取れない

こんにちは いつもこちらでお世話になっています。 テキストファイルからすべての文字列を読み込んで フレーム上のtextAreaに読み込んだ文字列を書き込みたいのですが 文字化けしてしまって、正しく表示されません。 どなたか、正しく表示する方法を教えていただけないでしょうか。 よろしくおねがいします。 ちなみに、テキストボックスのパスとファイル名は(c:/test.txt)です。 ================================================= import java.awt.*; import javax.swing.*; import java.io.*; class labeltest { public static void main(String args[]) { JFrame frame=new JFrame("test"); JPanel panel=new JPanel(); JTextArea ta=new JTextArea(20,30); String buff; ta.setLineWrap(true); panel.add(ta); Container ct=frame.getContentPane(); ct.add(panel); try { FileReader fr=new FileReader("c:/test.txt"); BufferedReader br=new BufferedReader(fr); while((buff=br.readLine())!=null) { ta.append(buff); JOptionPane.showMessageDialog(null,buff,"", JOptionPane.PLAIN_MESSAGE); } br.close(); fr.close(); } catch(FileNotFoundException e) { JOptionPane.showMessageDialog(null, "見つからない","失敗",JOptionPane.PLAIN_MESSAGE); } catch(IOException e) { JOptionPane.showMessageDialog(null,"読めない","失敗" ,JOptionPane.PLAIN_MESSAGE); } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.2

 こんにちは。  テキストファイルが何の文字コードで書かれているかを調べるのが先決かと思います。  いくつか補足をお願いします。 1.OSはなんでしょうか? 2.テキストファイルを書いたテキストエディタは何でしょうか? 3.テキストエディタでファイルを保存しているときに、何の文字コードになっているか確認できないでしょうか? 4.BLUEPIXYさんのコードの"euc-jp"の部分を"JISAutoDetect"または、"UTF-8"、"UTF-16"などにするとどうなりますか?

19746999
質問者

お礼

PecoPlusさん。 非常に参考になるご回答頂いたのに お返事遅れて申し訳ございませんでした。 おかげさまで問題解決しました。 解決方法は2つありました。 1つはテキストエディタをシェアウェアの 「秀丸」に変えて、エンコードの種類を 「EUC」に変えて保存したら文字化けしないようになりました。 もうひとつは、「euc-jp」の部分を「JISAutoDetect」に変えたら 解決しました。忙しくてとても焦っていたので助かりました。 初心者なので わからないことだらけで 今後質問することもあると思いますが そのときはまたよろしくお願いいたします。 失礼します。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#1>残念ながら、文字化けしたままです。 ウチで試してみたところでは、うまく表示できましたが・ test.txt の文字コードはなんですか? もしかしたら、JTextArea のデフォルトフォントが違うとか・・

19746999
質問者

お礼

BLUEPIXYさん、こんばんは お返事遅れて申し訳ございません。 機会があったら、またよろしくお願いします。 それでは失礼します。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

多分、ファイルのエンコーディングがjava の標準のエンコーディングに合ってないのじゃないかと思います。 >FileReader fr=new FileReader("c:/test.txt"); >BufferedReader br=new BufferedReader(fr); を FileInputStream fr = new FileInputStream("c:/test.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(fr, "euc-jp")); みたいな感じでエンコーディング指定してみたらどうでしょう

19746999
質問者

補足

BLUEPIXYさん、この前はどうもありがとうございました。 今回もご回答して頂いて、ありがとうございます。 残念ながら、文字化けしたままです。 試しに aaaaa bbbbb gggggggggg hhhhhhhhhh テストあいうえお おはよう!こんにちは、こんばんは。 山、海、空、川 とtest.txtに書いたのですが、 textAreaにおいて アルファベットの前には四角が 日本語の前には半角のアルファベットや0 などが表示されてしまいます。