UTF8 - кодировка, в которой (грубо говоря) латинские буквы и символы кодируются одним байтом, а символы других алфавитов - несколькими (русского и казахского - двумя)
BOM - Byte Ordering Mark - грубо говоря, 3 байта в начале текстового файла, которые сообщают о том, что текст - в кодировке UTF-8
в идеале было бы хорошо иметь такую ситуацию: все файлы трактуются как UTF-8 без BOM.
Потому что от BOM бывают проблемы. в частности, при формировании HTML через файлы razor в итоговом HTML в середине (не в начале) файла может быть BOM. причина - мы инклудим (например, RenderPartial) cshtml-файл, а этот файл начинается с BOM-метки.
но такой настройки я в Студии не нашел. так что, остается прийти к соглашению о том, что все файлы проекта у нас будут в формате UTF-8 с BOM. кстати, обработчик TypeScript тупит иногда, если у TS-файла нет BOM.
если файл создается в Студии - он будет создан как UTF-8 с BOM.
проблема может быть при добавлении существующего файла к проекту:
если существующий файл без BOM и без кириллицы добавить в проект - он трактуется как ANSI, и если в дальнейшем будет добавлена кириллица - она будет сохранена в кодировке 1251. И у нас появляются проблемы. например, если речь идет о JS/TS-файле - т.к. сайты у нас на UTF-8 - при работе со строкой в кодировке 1251 пользователь увидит квадратики или каракули.
Вывод: разработчик должен следить, чтобы добавляемые в проект файлы были в кодировке UTF-8 с BOM.
посмотреть кодировку можно, например, в Notepad++
P.S. экспериментальным путем я установил, что при формировании бандлов BOM если и вставляется, то только в самое начало (как положено)
Комментариев нет:
Отправить комментарий