コード例 #1
0
        private static byte[] SyncBOM(byte[] originalBytes, byte[] newBytes)
        {
            bool originalHasBOM = HasBOM(originalBytes);
            bool newHasBOM      = HasBOM(newBytes);

            if (originalHasBOM && !newHasBOM)
            {
                var extended = new byte[newBytes.Length + 3];
                newBytes.CopyTo(extended, 3);
                BOM.CopyTo(extended, 0);
                newBytes = extended;
            }

            if (!originalHasBOM && newHasBOM)
            {
                var trimmed = new byte[newBytes.Length - 3];
                Array.Copy(newBytes, 3, trimmed, 0, trimmed.Length);
                newBytes = trimmed;
            }

            return(newBytes);
        }