Почему на странице в случайных местах отображаются юникодные знаки вопроса?
Сайт на Asp.Net MVC с использованием Razor. Периодически в случайных местах встречаются вот такие знаки вопроса, при этом остальной русский текст отображается нормально.
Положение и этих знаков зависит от контента страницы: если контент перед знаком изменится хоть на байт, знак либо исчезнет, либо переместится. Если контент до этого знака не изменяется, то он стабильно показывается при каждом обновлении страницы. Очевидно, что он появляется при какой-то деформации двухбайтовых символов. В кодировках везде выставлен UTF-8.
Есть предположение, что по каким-то причинам байты портятся на стыке двух TCP-пакетов. Я знаю, что TCP-протокол транспортного уровня, обеспечивающий целостность и непрерывность данных на верхнем уровне, но другого объяснения я не нашел. Как и не нашел причины, почему TCP может портить стыки пакетов.
Проблема проявляется на разных серверах с одним и тем же сайтом (перевозил пару раз), и даже на разных сайтах, созданных независимо друг от друга с нуля из стандартных шаблонов.
UPD
Пример поломанной строки: Не обработ�н.
Байты этой же строки:
0xD0, 0x9D, 0xD0, 0xB5, 0x20, 0xD0, 0xBE, 0xD0, 0xB1, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xBE, 0xD1, 0x82, 0xB0, 0xD0, 0xBD, 0x0A
Здесь видно, что в первом случае буква "а" кодируется 0xD0, 0xB0, а во втором (поломанном) случае 0xB0, 0xD0. Байты по каким-то причинам поменялись местами.