しているとしか思えません。クラスが文字コードの変換を担当します。ボランティアベースで実用的な水準に至ることは、ほぼ不可能です。それはただの青い鳥です。文字の同定はどうするのか。*すべての*文字集合に対して考えなければなりません。商用プロダクトでも難しい領域です。収録されていない文字が大量に増えてきました。大きな文字集合のほうがいいでしょう。2012〜3年現在、上に書いた要求を実用的にこなせるのは、Unicodeだけです。いいのですが、でも、いつもUnicodeを選択している状態になります。文字列をUnicodeベースにしてみました。unitで、文字列はその並びです。適切に対応してください。一致しないこともあります。複数のコードポイントが合成されることが多々あります。これは妥当な変更です。文字の構成部品にしかならない場合も多いです。IOIOへのインパクトのほうが大きいです。各メソッドが同じ型を返せます。Unicode文字列と決めたので、バイナリファイルの入出力では使えません。用途を考えると、次に分けれるでしょう。XMLファイルや対話的にファイルを開く場合など、あらかじめ文字コードが決まっているか外から与えられるテキストファイルテキストファイルだが、ファイルの文字コードが不明で、自動判定したいバイナリファイル1番目のケースは、単純に、読み書きのときに変換すればよろし。