• ベストアンサー

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

こんにちは いつもこちらでお世話になっています。 テキストファイルからすべての文字列を読み込んで フレーム上の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); } }

  • Java
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • 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 などが表示されてしまいます。

関連するQ&A

  • JOptionPaneでのフォーカスのトラブル

     今晩は。  私はJOptionPaneを、親コンポーネントをnullにして使っていたのですが モーダルなままで消えてしまうことがあります。次の方法で再現出来ます。 1.下記コードをJOptionPane.showMessageDialog(null, "test");の方で動かす。 2.ダイアログが出たままにして、タスクバーからデスクトップを表示する 3.再びタスクバーのアイコンからjavaのフレームを表示する。 4.タスクマネージャーで停止しないとフレームが消えない。  これはjavaのバグではないかと思うのですが、そうでしょうか。  また、別なクラスのダイアログから親コンポーネントを指定する時は、参照変数がなくても良いように、いつも引数nullで使っていたのですが、もし無理なら、何かそれに変わる便利な方法はないでしょうか。教えて下さい。 import java.awt.*; import javax.swing.*; public class BugTest{ public static void main(String[] args){ JFrame fr=new JFrame(); fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE); fr.setVisible(true); fr.setExtendedState(fr.MAXIMIZED_BOTH); JOptionPane.showMessageDialog(fr, "test"); //JOptionPane.showMessageDialog(null, "test"); } }

    • ベストアンサー
    • Java
  • テキストフィールドの文字をテキストエリアに表示する

    エラーも例外もないです。 但し今回の内容の"テキストフィールドに打ち込みエンターキーを文字をテキストフィールドに表示" が満たしてないですとりあえずソース乗せます mport java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class MyMemo { public static void main(String[] args) { JFrame Frame = new JFrame("課題"); Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Frame.setSize(500, 500); Frame.setLocationRelativeTo(null); Container contentPane = Frame.getContentPane(); // テキストフィールドのインスタンスを生成 final JTextField text = new JTextField();// テキストエリアのインスタンスを生成 text.addActionListener(new MyActionListener()); Frame.setVisible(true); final JTextArea Area = new JTextArea(5,0); // スクロールペインにテキストエリアを追加 JScrollPane scrollPane = new JScrollPane(Area); // パネルをコンポーネントに配置 contentPane.add(text, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); Frame.setVisible(true); } static class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } } どう文字をテキストエリアに表示したらいいのかわからなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Servletでcsvファイル読込

    Servletからcsvファイルを読込む処理を作成しています。 しかし、FileNotFoundExceptionが発生してファイルを読込めません。 下記のように記述した場合、csvファイルはどこに置けばよいのでしょうか? いろいろファイルの置き場所を変えてはやってみましたがダメでした。 package action; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class MemberEntryAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 入力ストリームを作成。 FileReader fr = new FileReader("a.csv"); BufferedReader br = new BufferedReader(fr); // 読込みループ。 String line; // 読み込まれた1行。 while( (line = br.readLine()) != null ) { System.out.println(line); } // 入力・出力ストリームを閉じる。 br.close(); fr.close(); } catch ( FileNotFoundException e ) { System.out.println("FileNotFound!"); } return mapping.findForward("memberMenu"); } }

  • エラーの原因がわかりません

    JAVA初心者ですが、ファイル入力を行うプログラムを実行 すると、エラーが出ますが、そのエラーの原因が まったく見当がつきません。 誰か教えてください。 ------------読み込みデータ(loc.dat) 2 11 1 4 1 5 7 1 3 7 7 2 12 11 1 4 1 11 12 4 1 5 3 1 1 11 13 4 1 5 2 1 -------------プログラム import java.io.*; class ExReader {   public static void main(String[] args) { try { //読み込みファイル指定 FileReader fr = new FileReader("loc.dat"); BufferedReader br = new BufferedReader(fr); //ファイルから1行ずつ読み込む String s; while ((s = br.readLine()) != null) { System.out.println(s); } //読み込みファイルをクローズする br.close(); } catch (Exception e) { System.out.println("err: "+e); System.exit(1); } } } ---------------コンパイル結果 C:\JAVA\sim>javac ExReader.java ExReader.java:7: シンボルを解決できません。 シンボル: コンストラクタ FileReader (java.lang.String) 場所 : FileReader の クラス FileReader fr = new FileReader("loc.dat"); ^ ExReader.java:8: シンボルを解決できません。 シンボル: コンストラクタ BufferedReader (FileReader) 場所 : java.io.BufferedReader の クラス BufferedReader br = new BufferedReader(fr); ^ エラー 2 個

    • ベストアンサー
    • Java
  • JTextFieldのgetTextについて

    javaプログラミング初心者です。 javaのGUIプログラミングについて少し分からないところがあるので質問させて頂きます。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TextTest extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; JTextField text = new JTextField(null, 10); JPanel p1 = new JPanel(); public static void main(String[] args){ TextTest frame = new TextTest(); frame.setVisible(true); } public TextTest(){ setBounds(10, 10, 460, 310); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle("Test"); GridBagLayout layout1 = new GridBagLayout(); p1.setLayout(layout1); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; layout1.setConstraints(text, gbc); p1.add(text); JButton decidebutton = new JButton("決定"); gbc.gridy = 1; layout1.setConstraints(decidebutton, gbc); p1.add(decidebutton); getContentPane().add(p1, BorderLayout.CENTER); decidebutton.addActionListener(this); decidebutton.setActionCommand("決定"); } public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); if(cmd.equals("決定")){ String str = text.getText(); if(str == null){ JOptionPane.showMessageDialog(null, "NULL入力"); } else{ JOptionPane.showMessageDialog(null, "それ以外"); } } } } 以上のプログラムを実行したとき、「決定」ボタンを押した際に「NULL入力」と書かれたダイアログが出てくるのが望ましいのですが、 実際には「それ以外」と書かれたダイアログが出てきてしまいます。 getTextメソッドではnullを返せないのか、と思い、テキストフィールドに「あ」、「NULL入力」と書かれたダイアログを表示させる条件をif(str == "あ")にしたのですがそれでも駄目・・・。 独学では限界があると思い質問させて頂きました。 これについての解決の方法を知っている方、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • SwingでgetContentPaneのエラーです、お願いします

     今晩は、java勉強中のものです、宜しくお願いします。  下のようなプログラムを組んでみましたが、「型JFrameから非staticメソッドgetContentPane()にstatic参照 することは出来ません」というエラーコードです。  原因が良く分かりません、どなたか教えて下さい。  いくら考えても原因がよく分かりません、宜しくお願いします。 ================================================================ public class Panel_train extends JFrame{ public static void main(String[] args) { Container cnt = getContentPane(); JPanel jpanel = new JPanel(); JTextArea jtext = new JTextArea("Hello World", 100, 50); jpanel.add(jtext); cnt.add(jpanel, BorderLayout.CENTER); JFrame frame = new JFrame("テスト"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 100); frame.setVisible(true); } }

    • ベストアンサー
    • Java
  • ファイルの読み込み

    "DataFile"に何行か文字列がはいっており、下のソースでそれをテキストボックスにすべて出力したいのですが、1行しか読まれません。 やり方を教えてください。 String moji = null; FileRead(){   try {     BufferedReader br = new BufferedReader( new FileReader( "DataFile.txt" ) );     while ((moji = br.readLine()) != null){       taList.setText(moji);     }     br.close();   }   catch ( Exception e ) {     System.out.println( e.getMessage() );   } }

    • ベストアンサー
    • Java
  • javaでの文字列からの数字抽出

    文字列内の数字だけを取り出したいとおもっています。 たとえばファイル内からreadline()で読み込んだ文字列が [0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637] だったならば 配列内に {0,0,-0.34063,0.0756989,-0.362579,0.118652,-0.36264,0.118637 } のように格納したいのですが可能なんでしょうか? "["や空白のようなものを削除して数字だけを取り出したいのです。 現在はこのようにファイルの文字列を取得しています FileReader fr = new FileReader(inputpath); BufferedReader br = new BufferedReader(fr); String read = br.readLine(); よろしくお願いします。

    • ベストアンサー
    • Java
  • 文字列の置換

    JAVAであるファイル内の文字列を置換するプログラム(日本語)を作りたいのですが、 ・ ・ String h_s; FileReader h_fr = new FileReader(in_filename); BufferedReader h_br = new BufferedReader(h_fr); while(true){  h_s = h_br.readLine();  if (h_s == null){   break;  }  ●文字列を置換するプログラム● } ・ ・ ここの●文字列を置換するプログラム●にあたる適当な関数って何かありますか? たとえばperlでいうと↓みたいなものなのですが・・・ s/置換前文字/置換後文字/g よろしくお願いします。

    • ベストアンサー
    • Java
  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java

専門家に質問してみよう