Сразу оговорюсь, что это не вопрос, а просто наблюдение, которое может оказаться полезным для некоторых пользователей Фаерфокса и веб-разработчиков.
Занялся я по случаю работы над вики расшифровыванием разных вредных URL-ов, которые пользователи могут вводить в адресную строку браузера. Например таких вот:
Как уже обсуждалось, Фаерфокс из-под Винды посылает такой адрес в однобайтовой кодировке, т.е. так:
Мой код на сервере (PHP) ждёт UTF-8. Здесь проблема решаема - если получил не UTF-8, конвертируй CP1251 -> UTF-8 и все дела. Я так и сделал, и до поры всё работало замечательно. Потом неожиданно всплыла такая бяка: в адресной строке ввожу адрес со смешанным языком:
Сервер получает строку не UTF-8, но и не простую CP1251, а вот такой странный гибрид:
Значит, строка "буква" передана в CP1251, а строка "Ξ" (греческая заглавная буква "Кси") - в UTF-8! Естественно, конвертация адреса CP1251 -> UTF-8 даёт неправильный результат. При этом, если набрать, например, вот так:
то результат будет вполне хороший:
Всё в UTF-8, включая русские буквы. Таким образом, "гибридная кодировка" возникает только если русская и нерусская (здесь греческая) части адреса разделены дробью "/". Вот такие дела.
Отсутствует
TLemur, я не такой фанат Фаерфокса , и версий этих не имею. Можно ли их поставить параллельно с 2.0? А пока что давайте попросим кого-нибудь, кто имеет 3.0, ввести те URL'ы, которые я привёл выше, и показать нам результат.
Отсутствует
А вот совсем весёлый примерчик, хоть и надуманный, но почему бы и нет?
Здесь русские буквы "О" и "Ё" и греческая буква "Пси" (сдались мне эти греки? - нет, просто примеры с ними хорошие получаются ) Вот что имеем в сухом остатке (по прежнему FF 2.0.0.11):
Вот как это интерпретировать на стороне сервера - вообще не знаю
Добавлено Fri Mar 7 13:31:46 2008 :
И вот ещё домашнее задание Как думаете, на какую страницу Википедии вы попадёте, если в FF 2.0 под русской Виндою наберёте вручную следующий адрес?
Буквы "Р" и "Ё" - русские. Прошу прощения у уважаемой публики, если утомляю, но меня эта тема задела сильно.
Отсутствует
Ну вот, собственно, установил себе 3.0b4 (пишу из-под него). И, знаете, здесь такого глюка нет! Действительно, все вышеприведённые URL'ы работаю так, как положено. Я ничего не настраивал, просто запустил браузер и проверил ссылки. Потом заметил, что параметр network.standard-url.encode-utf8 на страничке about:config здесь по умолчанию true, а в 2.0 - false. Если в 2.0 установить в true, то там начинаются проблемы со ссылками на некоторых сайтах не в UTF-8 - я наблюдал на vkontakte.ru (CP1251) при переходе по страницам с результатами поиска. Но в 3.0 этих проблем нет. В общем, я рад - недолго осталось париться - как только 2.0 уйдёт в небытие, можно будет забыть об этой проблеме. А пока переживём как-нибудь
Отсутствует
X-Ander
Потом заметил, что параметр network.standard-url.encode-utf8 на страничке about:config здесь по умолчанию true, а в 2.0 - false.
В 3.0 был исправлен Bug 261929 – Consider sending urls in UTF-8 by default (images/links with non-ASCII chacters not displayed). Там было изменено значение этого параметра.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует