Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.
  • Форумы
  •  » Firefox
  •  » Наблюдение. Разные кодировки в одной адресной строке

№107-03-2008 11:34:39

X-Ander
Участник
 
Группа: Members
Зарегистрирован: 31-03-2005
Сообщений: 17
UA: Firefox 2.0

Наблюдение. Разные кодировки в одной адресной строке

Сразу оговорюсь, что это не вопрос, а просто наблюдение, которое может оказаться полезным для некоторых пользователей Фаерфокса и веб-разработчиков.

Занялся я по случаю работы над вики расшифровыванием разных вредных URL-ов, которые пользователи могут вводить в адресную строку браузера. Например таких вот:

Выделить код

Код:

http://example.domain/привет/люди

Как уже обсуждалось, Фаерфокс из-под Винды посылает такой адрес в однобайтовой кодировке, т.е. так:

Выделить код

Код:

http://example.domain/%EF%F0%E8%E2%E5%F2/%EB%FE%E4%E8

Мой код на сервере (PHP) ждёт UTF-8. Здесь проблема решаема - если получил не UTF-8, конвертируй CP1251 -> UTF-8 и все дела. Я так и сделал, и до поры всё работало замечательно. Потом неожиданно всплыла такая бяка: в адресной строке ввожу адрес со смешанным языком:

Выделить код

Код:

http://example.domain/буква/Ξ

Сервер получает строку не UTF-8, но и не простую CP1251, а вот такой странный гибрид:

Выделить код

Код:

http://example.domain/%E1%F3%EA%E2%E0/%CE%9E

Значит, строка "буква" передана в CP1251, а строка "Ξ" (греческая заглавная буква "Кси") - в UTF-8! Естественно, конвертация адреса CP1251 -> UTF-8 даёт неправильный результат. При этом, если набрать, например, вот так:

Выделить код

Код:

http://example.domain/буква_Ξ

то результат будет вполне хороший:

Выделить код

Код:

http://example.domain/%D0%B1%D1%83%D0%BA%D0%B2%D0%B0_%CE%9E

Всё в UTF-8, включая русские буквы. Таким образом, "гибридная кодировка" возникает только если русская и нерусская (здесь греческая) части адреса разделены дробью "/". Вот такие дела.

Отсутствует

 

№207-03-2008 11:46:52

TLemur
Забанен
 
Группа: Members
Зарегистрирован: 18-10-2004
Сообщений: 1764
UA: Firefox 2.0

Re: Наблюдение. Разные кодировки в одной адресной строке

X-Ander

А вот это интересно...
Попробуйте, пожалуйста, на Firefox 3.0 5b или 4b.

Отсутствует

 

№307-03-2008 11:59:05

X-Ander
Участник
 
Группа: Members
Зарегистрирован: 31-03-2005
Сообщений: 17
UA: Firefox 2.0

Re: Наблюдение. Разные кодировки в одной адресной строке

TLemur, я не такой фанат Фаерфокса :) , и версий этих не имею. Можно ли их поставить параллельно с 2.0? А пока что давайте попросим кого-нибудь, кто имеет 3.0, ввести те URL'ы, которые я привёл выше, и показать нам результат.

Отсутствует

 

№407-03-2008 13:17:12

X-Ander
Участник
 
Группа: Members
Зарегистрирован: 31-03-2005
Сообщений: 17
UA: Firefox 2.0

Re: Наблюдение. Разные кодировки в одной адресной строке

А вот совсем весёлый примерчик, хоть и надуманный, но почему бы и нет?

Выделить код

Код:

http://example.domain/ОЁ/Ψ

Здесь русские буквы "О" и "Ё" и греческая буква "Пси" (сдались мне эти греки? - нет, просто примеры с ними хорошие получаются :) ) Вот что имеем в сухом остатке (по прежнему FF 2.0.0.11):

Выделить код

Код:

http://example.domain/%CE%A8/%CE%A8

Вот как это интерпретировать на стороне сервера - вообще не знаю :(

Добавлено Fri Mar  7 13:31:46 2008 :
И вот ещё домашнее задание :) Как думаете, на какую страницу Википедии вы попадёте, если в FF 2.0 под русской Виндою наберёте вручную следующий адрес?

Выделить код

Код:

http://ru.wikipedia.org/wiki/РЁ

Буквы "Р" и "Ё" - русские. Прошу прощения у уважаемой публики, если утомляю, но меня эта тема задела сильно.

Отсутствует

 

№507-03-2008 19:51:08

X-Ander
Участник
 
Группа: Members
Зарегистрирован: 31-03-2005
Сообщений: 17
UA: Firefox 3.0

Re: Наблюдение. Разные кодировки в одной адресной строке

Ну вот, собственно, установил себе 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 уйдёт в небытие, можно будет забыть об этой проблеме. А пока переживём как-нибудь :)

Отсутствует

 

№608-03-2008 22:08:49

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.0

Re: Наблюдение. Разные кодировки в одной адресной строке

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.

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Наблюдение. Разные кодировки в одной адресной строке

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]