Простой git diff
раскрывает правду:
~/OSS/ClosedXML $ git diff 8fb8848~1 8fb8848 -- ClosedXML/AttributeExtensions.cs
diff --git a/ClosedXML/AttributeExtensions.cs b/ClosedXML/AttributeExtensions.cs
index 89b8b7f9..be354555 100644
--- a/ClosedXML/AttributeExtensions.cs
+++ b/ClosedXML/AttributeExtensions.cs
@@ -1,4 +1,4 @@
-<U+FEFF>using System;
+using System;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
Коммит 8fb8848
убрал символ <U+FEFF>
, который раньше был первым символом файла.<U+FEFF>
- это символ Unicode, который используется как BOM
(метка порядка следования байтов).
Дальнейшие исследования показывают, что файл закодирован как UTF-8
(иликодировка, которая использует один байт для каждого символа) .
~/OSS/ClosedXML $ git checkout 8fb8848~1 -- ClosedXML/AttributeExtensions.cs
~/OSS/ClosedXML $ hexdump -C ClosedXML/AttributeExtensions.cs -n 64
00000000 ef bb bf 75 73 69 6e 67 20 53 79 73 74 65 6d 3b |...using System;|
00000010 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 4c |..using System.L|
00000020 69 6e 71 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 |inq;..using Syst|
00000030 65 6d 2e 4c 69 6e 71 2e 45 78 70 72 65 73 73 69 |em.Linq.Expressi|
00000040
Первые три байта (ef bb bf
) файла перед фиксацией 8fb8848
- это BOM
, закодированные как UTF-8
.
UTF-8
делаетне нужно a BOM
, и некоторые инструменты имели проблемы с его обработкой.Вам лучше настроить ваш редактор на , а не и вставить BOM
, если файлы сохранены как UTF-8
.