Всем привет. Недавно столкнулись с "плавающим" багом, который воспроизводится только на продакшене. На некоторых страницах произвольно портится один кириллический символ: �. Причем только один и его появление зависит от строки http-респонса с версткой. (IIS 8 - Winserver 2012)
Написал консоль и разобрал респонс побайтово и что получилось:
У нас вся страница отдаётся в UTF-8. Русский символ представлен 2 байтами: например буква Е - "d0 95". Как получается битый символ - в респонсе почему теряется первый байт - d0 от русского символа и он становится битым. Это происходит, если этой байт является примерно 18-тысячным с начала. Если же в верстку немного поменять и сделать так, что 18-тысячный символ будет латиница, то все ок - никаких битых символов. Т.е. портится только в одной позиции респонса. Проблема еще в том, что ни на тестовых стендах, ни локально эта проблема не воспроизводится.
Результаты гугления привели к двум возможным причинам:
1. Неправильно указано длина контента для gzip и при раззиповке мы получаем ошибку как раз на указанной длине контента. На практике отключали gzip - все равно символ проблема остаётся.
2. На stackoverflow был ответ, что помогла переустановка модуля URL Rewrite - сделали, но символ все равно остался.
Если вдруг, кто сталкивался с подобной проблемой, то буду признателен за помощь.