- ベストアンサー
javaプログラミングで文字化けせずに検索結果のxmlを取得する方法
- javaプログラミングでYahooのWebサービスを利用して、検索結果のxmlを取り出す方法について説明します。
- 現在のプログラムでは、文字(日本語)が化けてしまう問題がありますが、文字化けせずに取り出す方法を考えています。
- コードに修正が必要で、具体的な変更箇所についても解説します。
- みんなの回答 (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でやっぱり文字化けします。
お礼
おかげさまでうまく文字化けせずに出力させることができました! ありがとうございました!