В некотором смысле это не ответ, потому что он говорит не о том, что говорит Microsoft, а о том, что говорят стандарты.Надеюсь, что это все равно поможет.
U + FEFF как обычный символ
Как вы сказали, U + FEFF следует рассматривать как BOM (метку порядка байтов) в начале файла,Теоретически он также может появляться в середине текста, поскольку на самом деле это символ, обозначающий неразрывный пробел нулевой ширины (ZWNBSP).В некоторых языках / системах письма все слова в строке объединяются (= пишутся вместе), и в таких случаях этот символ может использоваться в качестве разделителя, как обычный пробел в английском, но он не вызывает типографически видимого пробела.Я на самом деле не знаком с такими сценариями, поэтому мое мнение может быть не совсем правильным.
U + FEFF должен отображаться только как спецификация
Однако использование U + FEFF в качестве ZWNBSP устарело начиная с версии Unicode 3.2 и в настоящее время является цельюиз U + FEFF должен действовать как спецификация.Вместо ZWNBSP в качестве разделителя консорциум Unicode настоятельно предпочитает использовать символ U + 2060 (объединитель слов).Их FAQ также предлагают , что любой U + FEFF, встречающийся в середине файла, может рассматриваться как неподдерживаемый символ, который должен отображаться как невидимый.Другое возможное решение, которое приходит мне в голову, - это заменить любой U + FEFF, встречающийся в середине файла, на U + 2060 или просто игнорировать его.
Случайно добавленный U + FEFF
IУгадайте, что наиболее вероятная причина появления U + FEFF в середине текста заключается в том, что это ошибочный результат (или побочный эффект) конкатенации строк.RFC 3629, который включал в себя использование спецификации, означает, что для объединения строк необходимо удалить начальный U + FEFF.Это также подразумевает, что символ может быть просто удален при нахождении в середине текста.
U + FEFF и UTF-8
U + FEFF, поскольку спецификация не имеет реального эффекта, когда тексткодируется как UTF-8, поскольку он всегда имеет один и тот же порядок байтов.Спецификация в UTF-8 создает помехи системам, которые полагаются на наличие определенных ведущих символов и протоколов, которые явно предписывают метод кодирования или идентификации кодирования.Реальный мировой опыт также показал, что некоторые приложения подавляются UTF-8 с помощью спецификации.Поэтому использование спецификации, как правило, не рекомендуется при использовании UTF-8.Удаление спецификации из файла в кодировке UTF-8 не должно приводить к неправильной интерпретации файла (если только не существует какой-либо контрольной суммы или цифровой подписи, связанной с потоком байтов файла).