• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaプログラミング)

javaプログラミングで文字化けせずに検索結果のxmlを取得する方法

このQ&Aのポイント
  • javaプログラミングでYahooのWebサービスを利用して、検索結果のxmlを取り出す方法について説明します。
  • 現在のプログラムでは、文字(日本語)が化けてしまう問題がありますが、文字化けせずに取り出す方法を考えています。
  • コードに修正が必要で、具体的な変更箇所についても解説します。

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

  • ベストアンサー
  • kabinett
  • ベストアンサー率60% (9/15)
回答No.1

バイトストリームから読み込んだデータを、文字コード変換せずに文字ストリームに書き出しているので、文字化けが起こっています。ですので、文字コード変換を行うか、バイトストリームへ書き出しを行うかすれば文字化けしなくなります。 ファイル出力ストリームの宣言からcatchの前までを例示すると、 ○コード変換する場合 // ファイル出力ストリームを取得(第二引数) BufferedWriter bw = new BufferedWriter(new FileWriter(args[0])); URL url = new URL(request); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8")); char[] buf = new char[1024]; int len; while ((len = br.read(buf,0,1024)) != -1) { for (int i = 0; i < len; i++) { System.out.print(buf[i]); bw.write(buf[i]); } } br.close(); bw.close(); ○バイトストリームへ書き出しを行う場合 // ファイル出力ストリームを取得(第二引数) BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(args[0])); URL url = new URL(request); InputStream in = url.openStream(); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) != -1) { for (int i = 0; i < len; i++) { System.out.print(buf[i]); bo.write(buf[i]); } } in.close(); bo.close(); のようになるかと思います。 バイトストリーム書き出しの場合は、System.out.printlnでやっぱり文字化けします。

pikatyu77
質問者

お礼

おかげさまでうまく文字化けせずに出力させることができました! ありがとうございました!

関連するQ&A