示例#1
0
        /// <summary>読み込んであるバイト配列のプリアンブル(BOMヘッダ/マジックナンバー)からファイル文字コード種類特定を試みる</summary>
        /// <param name="len">ファイルサイズ(未読込部分も含む。読み込み済サイズはthis.Lengthを参照)</param>
        /// <returns>確定した場合、ファイル文字コード種類。確定できなかった場合null</returns>
        protected virtual CharCode GetPreamble(long len)
        {
            //【0】ファイル先頭バイトからUTF文字コード(BOMつきUTF)を判定
            CharCode ret = CharCode.GetPreamble(this.Bytes, this.Length);

            //BOMテキストファイルと判定できず&ファイル先頭にバイナリファイル特徴の0x00が登場している場合、追加チェック
            if (ret == null && Array.IndexOf <byte>(this.Bytes, 0x00, 0, this.Length) >= 0)
            {     //UTF16Nの可能性がなければバイナリファイルとみなす
                if (ReadJEnc.SeemsUTF16N(this.Bytes, (int)len) == null)
                { //■バイナリ確定(マジックナンバーからファイル種類を決定)
                    return(FileType.GetBinaryType(this.Bytes, this.Length));
                }
            }
            return(ret); //■BOMから特定できた場合はBOMつきUTF(特定できなかった場合はnull)
        }