ネットからコンテンツを取ってきて,juniversalchardet で文字コード判定

import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import org.mozilla.universalchardet.UniversalDetector;


public class test{
    public static void main(String args[]){
	UniversalDetector detector = new UniversalDetector(null);

	try {
	    URL url = new URL(args[0]);	//引数に URL を指定してね
	    InputStream is = url.openStream();

	    // コンテンツのバイト列を格納するための ArrayList。
	    // (メモ)コンテンツの長さが予め分からないため、リストを用いる。
	    ArrayList<Byte> list = new ArrayList<Byte>();

	    final int bufSize = 500;
	    byte[] buf = new byte[bufSize];
	    int bufferSize = 0;	// 最終的に読み込んだバイト数(= コンテンツ長)
	    while(true){
		// (メモ)readLen は実際に読み込んだバイト数
		int readLen = is.read(buf, 0, bufSize);
		if(readLen == -1) break;
		
		for(int i = 0; i < readLen; i++){
		    list.add(new Byte(buf[i]));
		}
		
		bufferSize += readLen;
	    }

	    // リスト ArrayList<Byte> を配列 byte[] へ変換(というか、コピー)
	    byte[] byteArray = new byte[bufferSize];
	    for(int i = 0; i < bufferSize; i++){
		byteArray[i] = list.get(i).byteValue();
	    }

	    // 読み込んだバイト列を juniversalchardet へ渡す
	    detector.handleData(byteArray, 0, bufferSize);
	    detector.dataEnd();

	    //文字コードの判定
	    String encoding = detector.getDetectedCharset();
	    System.out.println(encoding);	//文字コード判定結果の表示
	    
	    detector.reset();

	    // コンテンツを String型にする(この時点で UTF-8 に変換されている)
	    String content = new String(byteArray, encoding);
	    System.out.println(content);	//試しに表示してみる
	    
	} catch(Exception e){
	    System.err.println(e);
	    System.exit(1);
	}
    }
}

コンパイルは

$ javac -cp juniversalchardet-1.0.3.jar test.java
$ java -cp juniversalchardet-1.0.3.jar:. test