Какво е BOM?
Знакът за байтов ред (BOM), или знак за байтов ред, е специален знак, който се вмъква в Unicode файл, кодиран с UTF-8, UTF16 или UTF-32, за идентифициране на типа кодиране на Unicode файл. За UTF-8 BOM не е необходим, тъй като се използва за маркиране на типа кодиране и реда на байтовете (big-endian или little-endian) на многобайтов кодиран файл. В UTF-8 броят на битовете, кодирани за всеки символ, се изразява чрез първия байт и няма разлика между big-endian и little-endian. UTF-8 не изисква BOM, въпреки че стандартът Unicode позволява използването на BOM в UTF-8. Затова UTF-8 без BOM е стандартната форма и основно е навик на Microsoft да поставя BOM в UTF-8 файл (между другото: това е и навик на Microsoft да нарича UTF-16 с BOM "Unicode" без да навлиза в подробности). BOM се подготвят за UTF-16 и UTF-32 за маркиране на реда на байтовете. Microsoft използва BOM в UTF-8, защото позволява ясно разграничение между UTF-8 и ASCII кодиране, в противен случай отварянето на CSV файл в Excel може да бъде объркано. Но такъв файл може да причини проблеми в операционни системи, различни от Windows. Разликата между "UTF-8" и "UTF-8 с BOM" е дали има BOM или не. Тоест, дали има U+FEFF в началото на файла. Уеб кодът на UTF-8 не трябва да използва BOM, в противен случай грешките са чести. Когато се извежда CSV файл от http отговор, той по подразбиране не се включва, когато е настроен на utf8 BOM, но Windows Excel използва BOM, за да потвърди кодирането на UTF8, и всички трябва да записват BOM в началото на файла.
Когато за първи път разработвате генератор на Java код, ще поставите файла директноЗапиши в UTF-8 файл, който съдържа BOM тагТова ще доведе до грешки при опаковането, както следва:
Незаконни знаци: '\ufeff'
Как да използвам .NET / C#, за да определя дали даден файл съдържа BOM тагове? , кодът е следният:
Колеги, прикачениКонвертира формата UTF-8 BOM в UTF-8 (без BOM тагове), пълният код е следният:
(Край)
|