文字コード判定+変換ぐらい自力で書いてみようと思ったけど
SJISとEUCの判定って面倒。

0xA1-0xDFとかが続いてたらどのあたりで見切りつけるわけ?

あとさ、判定ルーチンって、何バイトずつチェックするの?
もし3バイトずつにして「0xA1」「0xE0」「0xA1」とかってあったら
「SJIS半角+SJIS全角」もしくは「EUC全角+EUC全角1バイト目」なわけでしょ。
次のチェック時には1バイトずれちゃわない?