返信ありがとうございます。
◆デフォルトとは
たとえば半角英数字ばかりのファイルの場合を考えると、
文字コードが検出されない(第一候補に挙がった
文字コード検査結果が、ポイント数0)ため、
候補に挙がる文字コードは以下の文字コードになります。
SJIS,EUC,UTF-8,CESU-8,JIS
# UTF-7 は、SetD以外の半角英数字が入ったファイルに対しては、
# ポイント数をINT_MINにするため、除外しています。
この時、自動判別器はどれを選択すればいいのか迷います。
ここで、SJIS がデフォルト文字コードに
指定されていた場合は、自動判別器が SJIS を
選します。つまり、デフォルトとは、コードが検出
されない場合で判別候補が複数挙がった場合の
既定選択肢、という意味になります。
◆優先順位とは
文字コードが検出された場合(第一候補に挙がった文字コード
検査結果が、不正バイト数が検査データの0.05パーセント未満で、
ポイント数が1以上の場合)で、かつ、同ポイントの文字コードが
第2候補 第3候補に挙がっている場合、ケースバイケースの
優先順位でこうほをしぼっていきます。
1.SJISとUTF-8またはCESU-8が同ポイントだった場合、
UTF-8を優先します。これは、CESU-8とUTF-8を
SJISよりも既定の優先順位を高くすることで対処します。
# 既定の優先順位とは、CESI::GetIndexById()で決定される、
# 配列CESI::m_aMbcInfo内の格納位置のことです。
# 既定の優先順位を高くするとは、配列内の格納位置を
# 添え字0に近づけるということです。
# なぜUTF-8を優先するかというと、半角カタカナの影響で、
# SJISのポイント数が無駄に上がっている場合があるからです。
2.SJISとEUCが同ポイントだった場合、
EUC全角文字にEUCひらがなが25%以上含まれている場合、
EUCを優先し、そうでなければSJISを優先します。
# 25パーセントというのは適当です。
3.UTF-8とCESU-8が同ポイントだった場合、
タイプ別設定にある「自動判別時にCESU-8を優先する」
オプションにより、どちらを優先するかを決定します。
(このくらいしか作っていないです… ^^;)
つまり、優先順位とは、文字コード検査の結果、
同ポイントになった複数の文字コードのどれを第一候補するかを
解決する表みたいなものにある優先度のことを指しています。
> 例えば、デフォルト文字コードでUTF-8を
> 選択し、自動判別時にCESU-8を優先するように設定して
> おくと、UTF-8が採用されるのはどんなときで、CESU-8が
> 採用されるのはどんなときですか?
UTF-8が採用されるとき: 文字コードが検出されない場合か、
検出された場合は、UTF-8固有の4バイトコードが見つかった場合で、
第一候補が明確な場合です。
CESU-8が採用されるとき: 文字コードが検出された場合で、
CESU-8とUTF-8が同ポイントで第一候補のときか、
CESU-8固有の6バイトコードが見つかった場合で、第一候補が明確な場合です。
このくらいでよろしいでしょうか。。。