Макс Симонов, с которым мы вместе работаем, обратил внимание на странное поведение IE в Windows XP при попытке открыть некий URL - текст заголовка окна браузера был написан немного выше того места, где он должен находится.
Мне пришло в голову, что это может быть не временным глюком, а некой реакцией браузера на ответ сервера или URL. Я попытался это проверить и вот что выяснил.
Баг проявляется в том случае, если в заголовок окна попал символ перевода строки. Из тега <TITLE> он попасть туда не может - браузер, видимо, в этом случае преобразует все пробельные символы к пробелу. Как и многие браузеры IE, если тег TITLE не задан, в качестве заголовка окна выводит URL текущего документа. В URL'e переводы строк содержаться могут - в виде последовательностей, закодированных в соответствии с правилами протокола HTTP, т.е. процента и кода символа в шестнадцатеричной системе.
Все символы, закодированные таким образом, при выводе в заголовок раскодируются, видимо для того, чтобы отображать в виде букв строки запросов, содержащие национальные символы. Раскодируются и символы перевода строк. При выводе они отображаются не как символы, которые соответствуют этим кодам в таблице ASCII, а действуют как спецсимволы - сдвигают строку. Правда сдвигается строка почему-то вся, а не ее часть.
Баг никак не проявляет себя на "классической" ("Classic") теме (theme) Windows XP. Кроме символов
%0A и
%0D, на вывод в заголовок оказывает влияние символ %00. Если символ попался в запросе, в заголовок попадет лишь часть запроса - та что находится до этого символа.