ヘッダにContent-Typeがあるならそれを使う
無ければデータの初めにBOMが無いかどうかチェック
見つからなければmeta要素でContent-Typeが定義されていないかチェック
それで見つからなければ自前で判断

文字コード判別にはこことか
ttp://www.gprj.net/