Что такое BOM?
Метка порядка байтов (BOM), или метка порядка байтов, — это специальная метка, вставляемая в файл Юникода, закодированный с помощью UTF-8, UTF16 или UTF-32, чтобы определить тип кодировки файла Юникода. Для 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? , код следующий:
Коллеги, прикрепленныеПреобразует формат BOM UTF-8 в формат UTF-8 (без тегов BOM), полный код выглядит следующим образом:
(Конец)
|