>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Firefox http://forum.mozilla-russia.org/viewforum.php?id=4 >Наблюдение. Разные кодировки в одной адресной строке http://forum.mozilla-russia.org/viewtopic.php?id=21955 |
X-Ander > 07-03-2008 11:34:39 |
Сразу оговорюсь, что это не вопрос, а просто наблюдение, которое может оказаться полезным для некоторых пользователей Фаерфокса и веб-разработчиков. Занялся я по случаю работы над вики расшифровыванием разных вредных URL-ов, которые пользователи могут вводить в адресную строку браузера. Например таких вот: Как уже обсуждалось, Фаерфокс из-под Винды посылает такой адрес в однобайтовой кодировке, т.е. так: Мой код на сервере (PHP) ждёт UTF-8. Здесь проблема решаема - если получил не UTF-8, конвертируй CP1251 -> UTF-8 и все дела. Я так и сделал, и до поры всё работало замечательно. Потом неожиданно всплыла такая бяка: в адресной строке ввожу адрес со смешанным языком: Сервер получает строку не UTF-8, но и не простую CP1251, а вот такой странный гибрид: Значит, строка "буква" передана в CP1251, а строка "Ξ" (греческая заглавная буква "Кси") - в UTF-8! Естественно, конвертация адреса CP1251 -> UTF-8 даёт неправильный результат. При этом, если набрать, например, вот так: то результат будет вполне хороший: Всё в UTF-8, включая русские буквы. Таким образом, "гибридная кодировка" возникает только если русская и нерусская (здесь греческая) части адреса разделены дробью "/". Вот такие дела. |
TLemur > 07-03-2008 11:46:52 |
X-Ander А вот это интересно... |
X-Ander > 07-03-2008 11:59:05 |
TLemur, я не такой фанат Фаерфокса , и версий этих не имею. Можно ли их поставить параллельно с 2.0? А пока что давайте попросим кого-нибудь, кто имеет 3.0, ввести те URL'ы, которые я привёл выше, и показать нам результат. |
X-Ander > 07-03-2008 13:17:12 |
А вот совсем весёлый примерчик, хоть и надуманный, но почему бы и нет? Здесь русские буквы "О" и "Ё" и греческая буква "Пси" (сдались мне эти греки? - нет, просто примеры с ними хорошие получаются ) Вот что имеем в сухом остатке (по прежнему FF 2.0.0.11): Вот как это интерпретировать на стороне сервера - вообще не знаю Добавлено Fri Mar 7 13:31:46 2008 : Буквы "Р" и "Ё" - русские. Прошу прощения у уважаемой публики, если утомляю, но меня эта тема задела сильно. |
X-Ander > 07-03-2008 19:51:08 |
Ну вот, собственно, установил себе 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 уйдёт в небытие, можно будет забыть об этой проблеме. А пока переживём как-нибудь |
Unghost > 08-03-2008 22:08:49 |
X-Ander
В 3.0 был исправлен Bug 261929 – Consider sending urls in UTF-8 by default (images/links with non-ASCII chacters not displayed). Там было изменено значение этого параметра. |