UTF-8とEUC-JPとShift_JISとISO-2022-JPが混ざったテキストファイルがあったとして(そんなファイル作るなよって話?)、しかし1行の中ではさすがに文字コードが統一されているとして、Pythonで全部の行に対して例外が出なくなるまでやってみればいいんじゃないか、と思ってみた。
やってみたら、codeconvert.pyとなった。まずまず、そこそこの精度。
EUC-JPだけのファイルにやってみたらUTF-8で例外が出ないことがあって、つまり間違うことはあるものの、まあまあな感じ。とりあえず、こんなもんでいいかな。
このリストにいろいろコードを追加していけばもっといろんなコードや言語に対応できるし、優先順位をいじれば精度が上がるかもしれない。あと精度という話だと、encode()のところの例外を処理して失敗したらguessをやりなおすようにすれば、もっと上がりそうな感じもする。EUC-JPをUTF-8だと思ってしまう場合は、encode()のところで例外が出ることが多い。