BOM
Byte Order Mark
Unicode, ISO 10646のUTF-16, UTF-32 でバイト順を判定するため先頭に付与するマーク UTF-8では不要だがMicrosoftなどが付与していたりして誤動作が耐えない JSONなどでは明確に禁止
UTF-16BE,UTF-16LE,UTF-32BE,UTF-32LEでは不可
UTF-8では不可だが使われる場合もあるので注意、限定的に許可されている風になっている
UTF-16BE の0xFE,0xFF, UTF-16LEの0xFF,0xFE
UTF-32BEの 0x00,0x00,0xFE,0xFF, UTF-32LEの 0xFF,0xFE,0x00,0x00
逆順にするとUnicodeで使用不可の0xFFFE になるため判定可能という理屈
0xFEFF ゼロ幅の改行しないスペース文字という意味があったが、Unicode 3.2でBOMと区別するため別のコードに割り振られた