誤判別はEUCの半角かなの部分が不正な文字としてカウントされていたことが原因のようです.
修正してテスト版を作り直しました.
http://sakura.qp.land.to/?Junk%2F1▼ ラスティブさん
>ユニコード固有値として認識される値の範囲を
>狭めたものを Patches #1513775 の方にアップしました.
こちらはあんまり関係なかったみたいです.
▼ ラスティブさん
>不正バイト数の方を優先的にみていることが
>原因となっているかもしれず…;;
例えばSJISの中に何かの都合でEUCが混ざっているようなファイルを開くと,SJIS, EUCともに不正バイトが検出され,どちらでもないUnicodeで開かれてしまう可能性がありますよね.判定時にまず不正バイトの文字数を比較していますが,不正な文字数が同じになるケースというのはほとんど0ではないでしょうか.とすると不正な文字が出た時点でアウト.
SJIS,EUC,JISあたりで間違われる分には良いのですが,Unicodeに間違われると改行が改行とみなされないので全部1行になってしまうのが気持ち悪いですし,
例えばある程度の長さの文書であれば改行が入っているのが当然.と仮定するとCRLFがたくさん入っていたら文字列的にはUnicodeと解釈できてもUnicodeではないだろうとか,そういうのも考慮に入れることはできないでしょうか.