/// <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) }