23 мая 2012 г.

Адреса wiki-статей без процентов

Добрый день.

Сегодня я сознаюсь, почему со страниц блога так много ссылок на страницы английской википедии, хотя всё то же самое можно найти и в русской. Ответ очень простой — было некогда разобраться, как ставить ссылки на русскую вики (серьёзно, я делал несколько подходов по 5 минут, но не находил простого способа).

Почему же я не спросил у коллективного разума интернет-знания? Бывают такие вопросы, ответ на которые почти невозможно получить с помощью поисковой машины. Википедия так популярна, что очень трудно найти текст вне википедии, если указал слово «wiki» в своём поисковом запросе. Это как пытаться узнать, выпустила ли свежий альбом «Music» группа «MP3». Ну или сейчас я расскажу, в чём была проблема, а вы покажете, как надо было искать на неё ответ — тоже полезно будет.

Вот представьте, что вам надо сослаться на какую-то статью русской википедии (или любую другую страницу, в адресе которой есть кириллица). Как это сделать?

Кажется, что очень легко:

  • открываем нужную страницу википедии,
  • копируем в буфер обмена адрес этой страницы из адресной строки браузера,
  • вставляем куда угодно.

Попробуйте. У меня всегда получалось что-то такое: «http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D0%BA%D0%B0%D1%80%D1%8F» А хотелось-то увидеть короткую и понятную строчку «http://ru.wikipedia.org/wiki/Преобразование_пекаря» (я честно перепробовал несколько браузеров, поискал решение в сети, но это не помогло). Согласитесь, второй адрес куда яснее и удобнее!

Кто-то скажет, что проблема высосана из пальца. Мол, хоть такие длинные адреса не очень удобны (по адресу не понятно, на какую страницу он приведёт, см. комментарии в этом блоге тут или тут), но жить можно. Проблема в том, что так почти ничего не работает (во всяком случае, если вставлять такие адреса в заметки blogger.com, то получаются такие ссылки, а вовсе не желаемые). Поэтому раньше мне было проще сослаться на английскую версию страницы. Но теперь порядок и гармония восстановлены!

Решение нашлось случайно: я чуть-чуть отредактировал адресную строчку браузера (случайно добавил символ «1», а потом стёр его). После этой процедуры копирование из адресной строки начало давать желаемый URL без процентов (у меня это сработало во всех браузерах, кроме IE).

Итого:
  • работающий способ проставления ссылок на русскую википедию теперь такой: открываем нужную страницу, делаем небольшое изменение в адресной строке браузера (добавляем и тут же убираем какой-нибудь символ, например), копируем адрес в буфер обмена, ... (я примерно понимаю, почему это работает, но пока не вижу более правильного решения);
  • я не знаю, как можно было найти решение этой проблемы в интернете (подозреваю, что тысячи других людей тоже не справились, поэтому половина интернета увешана невнятными адресами с процентами, какие вы можете увидеть по следующим ссылкам: 1, 2);
  • поэтому делюсь этим решением с вами, надеясь, что вы тоже поделитесь с теми, кто в этом нуждается.
Успехов!

36 комментариев:

  1. Ответы
    1. Спасибо, за ссылку.
      У меня, к сожалению, это решение не сработало (т.е. адрес «http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D0%BA%D0%B0%D1%80%D1%8F» декодировался, но получилось «http://ru.wikipedia.org/wiki/??????????????_??????»). У Вас работает?

      Удалить
    2. Анонимный23.05.2012, 17:51

      http://meyerweb.com/eric/tools/dencoder/
      а попробуйте такой

      Удалить
    3. Этот работает, спасибо!

      Удалить
    4. Отлично работает + 5

      Удалить
  2. Я копировал по частям. Сперва http://ru.wikipedia.org/wiki/, потом Функция_(математика), потом обе части склеивал. Но ваш способ мне нравится больше :)

    ОтветитьУдалить
    Ответы
    1. Отлично! Как минимум одному человеку стало лучше :)

      Удалить
    2. Из личного опыта: копирую адрес не полностью "ttp://ru.wikipedia.org/wiki/Преобразование_пекаря" потом дописываю недостающий "h" в начале.
      Вы когда нибудь задумывались, почему так происходит?
      Всё дело в том, что реальный адрес страницы идёт именно с %, а браузер показывает уже преобразованный вариант без %(не во всех браузерах так).
      Копируя весь видимый адрес, в буфер обмена падает реальный адрес. А если копировать часть адреса, то это распознаётся как текст и в буфер падает выделенный фрагмент.
      Соответственно страниц типа "http://ru.wikipedia.org/wiki/Преобразование_пекаря" не существует на вики. Сайт(или браузер по запросу сайта) преобразовывает в адрес с % и мы попадаем на нужную страницу.

      Удалить
    3. И кстати, это часто используют мошенники, маскируя свой сайт под популярные.
      Например: вы на каком то сайте, увидели банер с надписью "Вам новое письмо на одноклассниках! Нажмите кнопку, чтобы прочитать". При нажатии на кнопку банера, вы попадаете на сайт мошенника, который внешне не отличается от настоящего и даже вместо реального адреса, вы увидите "ok.ru". Разница лишь в том, что на этом сайте вы будете не авторизованы! Даже если вы всегда просто заходили на сайт без логина и пароля. И вы думая, что находитесь на настоящем сайте, ведь даже в адресной строке настоящий адрес, вводите свои логин и пароль. После чего введённые вами данные отправляются злоумышленнику, а вас просто перекидывает на настоящий сайт, где вы уже были авторизованных до этого.
      Извините за офф топ. Это для примера.

      Удалить
  3. на самом деле все очень просто, надо было использовать такой запрос "копирование url с русскими символами firefox" ну или любой другой браузер, и на второй же ссылке :

    "Чтобы этого не происходило, необходимо перейти по адресу about:config, найти там параметр network.standard-url.escape-utf8, и установить его значение в false. Этот параметр работает в Firefox 3.6.x. "

    ОтветитьУдалить
    Ответы
    1. Спасибо, что показали, как надо было искать решение!

      Удалить
    2. Огромное спасибо!

      Удалить
  4. Анонимный23.05.2012, 10:39

    Можно сделать гораздо проще :)

    1. В Firefox открываем about:config
    2. Ищем "network.standard-url.escape-utf8"
    3. Меняем на false
    4. ...
    5. Profit :)

    ОтветитьУдалить
    Ответы
    1. Здорово, что уже два человека знают этот финт (выше даже написано, как его найти :)

      Удалить
  5. Ответы
    1. Прекрасно! Уже второй человек получил пользу из-за того, что я промазал по клавиатуре нетбука :)

      Удалить
  6. Вот вам еще любопытное наблюдение от пользователя Ubuntu
    В хроме не работает ваш способ - копируются адреса с процентами
    В опере - адреса копируются с русскими буквами без каких-либо дополнительных действий

    ОтветитьУдалить
    Ответы
    1. Спасибо за информацию!
      Я проверял только в виндовом хроме - там это решение сработало.

      Удалить
    2. Анонимный23.05.2012, 12:16

      не всегда в орере копируется с русскими буквами

      Удалить
  7. В Опере надо установить флажок opera:config#Network|UTF8EscapeURLs (что по умолчанию сейчас ставится - не знаю).
    К слову на некоторых форумах и блогах http://ru.wikipedia.org/wiki/Преобразование_пекаря превратится в ссылку http://ru.wikipedia.org/wiki/ и текст Преобразование_пекаря, причём не всегда это можно исправить (например если там автоформатирование без доступа к html или bb тегам). К русскоязычным доменам тоже далеко не все парсеры лояльны.

    ОтветитьУдалить
    Ответы
    1. К сожалению, иногда форумы неверно распознают ссылки. Увы, это бывает и с кодированными адресами (которые порой вообще зарезаются до 64 символов, что не позволяет узнать, куда хотел сослаться автор сообщения).

      Удалить
    2. Ну как крайний вариант, есть сокращатели ссылок, которые позволяют решить такую проблему в особо запущенных случаях, но с ясностью того, куда ведут ссылки, ставится всё совсем плохо.

      Удалить
  8. Анонимный23.05.2012, 20:23

    Спасибо!

    ОтветитьУдалить
  9. А почему вообще возник такой вопрос& Ведь Вы же имеете возможность размещать ссылки под текстом и можете написать сверху что угодно.

    ОтветитьУдалить
    Ответы
    1. Да, если бы я формировал окончательный html-код, то можно было бы смириться с длинными ссылками вида <a href="ДЛИННЫЙ_АДРЕС_С_ПРОЦЕНТАМИ">ссылка</a>
      Но, например, данная блог-платформа чуть-чуть преобразует код, «исправляя» проценты на что-то другое. Из-за этого ссылка ломается (вместо кириллических символов отображаются вопросительные знаки).
      Решить это можно сокращателем ссылок, но быстрее и понятнее было сослаться на английскую версию статьи.

      Удалить
  10. Анонимный26.05.2012, 10:10

    ..открываем нужную страницу, делаем небольшое изменение в адресной строке браузера (добавляем и тут же убираем какой-нибудь символ, например), копируем адрес в буфер обмена, ... (я примерно понимаю, почему это работает..

    не соображу, почему помогает этот способ?

    ОтветитьУдалить
    Ответы
    1. Я это так понимаю - адресная строка может сформироваться двумя способами:
      - в результате перехода с одной страницы на другую (тогда отображается адрес без кодирования в однобайтовую кодировку, а "внутри" хранится кодированный адрес),
      - в результате изменения строки пользователем (вставил что-то из буфера обмена или отредактировал с клавиатуры) - в этот момент отображается ровно то, что хранится "внутри".

      Соответственно, когда мы копируем содержимое адресной строки в буфер обмена, то берётся значение из внутренней строки. Если мы строку поменяли "руками", то в буфере получим то, что видим на экране. Если же не меняли, то будет скопирована кодированная строка с процентами.

      Но можно заглянуть в открытые исходники браузеров - тогда всё встанет на свои места :)

      Удалить
  11. Анонимный29.05.2012, 0:14

    спасибо за разъяснение

    ОтветитьУдалить
  12. Анонимный03.06.2012, 15:28

    Хм, windows 7, firefox nightly - не работает метод.

    ОтветитьУдалить
    Ответы
    1. Спасибо за информацию.
      А предложенная выше правка network.standard-url.escape-utf8=false сработала?

      Удалить
  13. Анонимный05.06.2012, 3:13

    Проще всего перед копированием добавить пробел. Его удалять не нужно.
    В хроме помогает.

    ОтветитьУдалить
  14. на python:
    >>> import urllib2
    >>> print urllib2.unquote("http://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA")
    http://ru.wikipedia.org/wiki/Человек

    на ruby:
    1.9.3p194 :001 > require 'uri'
    => true
    1.9.3p194 :002 > URI::unescape("http://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA")
    => "http://ru.wikipedia.org/wiki/Человек"

    ОтветитьУдалить
    Ответы
    1. Ну да, это два самых быстрых и естественных решения, которые мне сразу пришли в голову :) Но нажимать пробел в адресной строке оказалось чуть быстрее.

      Удалить
    2. Куда конкретно добавить пробел?

      Удалить
    3. Сразу после URL в адресной строке.

      Удалить

Понравилась заметка? Подпишитесь на RSS-feed или email-рассылку.

Хотите поделиться ссылкой с другими? Добавьте в закладки:



Есть вопросы или предложения? Пишите письма на адрес mytribune АТ yandex.ru.

С уважением,
      Илья Весенний