SJIS変換や、UTF8変換のテスト結果を見てて思ったんですが、これらの変換関数は一体文字列を何に変換するのでしょう?
例えば、SJIS_UTF8変換の現在の実装は、
1. 文字列をSJISのバイト配列に変換し、
2. それをまたSJISとして文字列を読み取り、(ここでアルファベット以外の文字の情報は失われる=文字化け)
3. それを、UTF8バイト配列に変換し、
4. それをまたUTF8として文字列を読み取る。
というおかしな実装になっています。
本来の実装ならば文字列をバイト配列にする命令だったはずです。なでしこからなでしこ2になった際に、文字列の実装はShift-JISからUnicodeに変更になり、文字列はバイトシークエンスを保持できなくなったはずです。これらの問題を解決するには、バイト配列の実装が必要不可欠ではないでしょうか....?ご検討お願いします。
※ちなみに、このままだとバイナリファイルも読み込めないはずです。