※ ChatGPTを利用し、要約された質問です(原文:文字化けを直したい(Unicode(UTF8)の場合))
Unicode(UTF8)の場合に文字化けを直す方法
このQ&Aのポイント
HTMLから対象サイトの本文を取得するプログラムを作成しましたが、Unicode(UTF8)の場合に実行結果が文字化けしてしまいます。
対象サイトがEUCの場合には、BufferedReader reader = new BufferedReader(new InputStreamReader(di,"euc-jp"));とすれば文字化けしないですが、Unicode(UTF8)の場合はどのようにすればよいでしょうか?
対象サイトがUnicode(UTF8)の場合に文字化けしないようにする方法を教えてください。
文字化けを直したい(Unicode(UTF8)の場合)
以下のようなHTMLから対象サイトの本文を取得するプログラムを作成しました。
import java.net.*;
import java.io.*;
import java.util.regex.*;
public class GetBloghonbun {
public static void main(String args[]) {
String url = args[0];
boolean flag=false;
try {
String aLine;
byte buf[] = new byte[4096];
URL u = new URL(url);
DataInputStream di = new DataInputStream(u.openStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(di));
while((aLine=reader.readLine())!=null) {
if(aLine.indexOf("<<DIV CLASS=POST_BODY>") >=0){
flag=true;
} else {
if(flag && aLine.indexOf("<<DIV CLASS=POST_TAIL>")>=0)
break;
}
if(flag==false)
continue;
Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(aLine);
String string = matcher.replaceAll("");
System.out.println(string);
}
} catch(Exception e) {
System.out.println("例外" + e + "が発生しました");
}
}
}
このプログラムを次のサイト(ブログ)について実行しました。
http://blog.excite.co.jp/haagen-dazs/1632409/
しかし、対象サイトがUnicode(UTF8)なので実行結果として、
文字化けした結果の出力となりました。
対象サイトがEUCの場合には、
BufferedReader reader = new BufferedReader(new InputStreamReader(di,"euc-jp"));
とすればよいと以前に同様の質問をした際に教えていただきました。
対象サイトがUnicode(UTF8)の場合に、
実行結果が文字化けしないようにするには、
どのようにすればよいでしょうか?
よろしくお願いします。
お礼
ご回答ありがとうございました。