В 2010 году вы бы обслуживали URL-адреса, содержащие символы UTF-8, на большом веб-портале?
Символы Юникода запрещены согласно RFC на URL (см. Здесь ). Они должны быть закодированы в процентах, чтобы соответствовать стандартам.
Тем не менее, моя главная мысль - это обслуживание некодированных символов с единственной целью иметь красивые URL-адреса, так что кодирование процентов отсутствует.
Все основные браузеры, кажется, анализируют эти URL-адреса нормально, независимо от того, что говорит RFC. Мое общее впечатление, однако, состоит в том, что это становится очень шатким, оставляя домен веб-браузеров:
- Копирование + вставка URL-адресов в текстовые файлы, электронные письма и даже веб-сайты с другой кодировкой
- Клиентские библиотеки HTTP
- Экзотические браузеры, RSS-ридеры
Верно ли мое мнение, что здесь следует ожидать неприятностей, и, таким образом, это не практичное решение (пока), если вы обслуживаете нетехническую аудиторию, и важно, чтобы все ваши ссылки работали должным образом, даже если они цитируются и передаются?
Есть ли какой-то волшебный способ показывать красивые URL в HTML
http://www.example.com/düsseldorf?neighbourhood=Lörick
что может быть скопировано + вставлено с неповрежденными специальными символами, но работает правильно при повторном использовании в старых клиентах?
Ответы:
Используйте процентное кодирование. Современные браузеры позаботятся о проблемах отображения и вставки и сделают их удобочитаемыми. Например http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Редактировать: когда вы копируете такой URL в Firefox, буфер обмена будет содержать закодированную в процентах форму (что, как правило, хорошо), но если вы скопируете только ее часть, она останется незакодированной.
источник
GET /images/logo.png HTTP/1.1
? Всегда ли они кодируют URL в процентах?Что сказал Тгр. Задний план:
Это не URI. Но это IRI .
Вы не можете включить IRI в документ HTML4; тип атрибутов, подобных как
href
, определяется как URI, а не IRI. В любом случае некоторые браузеры будут обрабатывать IRI, но это не очень хорошая идея.Чтобы закодировать IRI в URI, взять части пути и запроса, кодировать их в UTF-8, а затем кодировать в процентах байты не-ASCII:
Если в части имени хоста IRI есть не-ASCII символы, например. вместо этого
http://例え.テスト/
они были закодированы с использованием Punycode .Теперь у вас есть URI. Это ужасный URI. Но большинство браузеров скрывают это для вас: скопируйте и вставьте его в адресную строку или перейдите по ссылке, и вы увидите, что оно отображается с оригинальными символами Юникода. Википедия использует это годами, например:
Единственный браузер, поведение которого непредсказуемо и не всегда отображает симпатичную версию IRI ...
...Ну ты знаешь.
источник
В зависимости от вашей схемы URL, вы можете сделать кодированную часть UTF-8 "не важной". Например, если вы посмотрите на URL переполнения стека, они имеют следующую форму:
Однако серверу на самом деле все равно, если вы получите деталь после неправильного идентификатора, так что это также работает:
Так что если бы у вас был такой макет, то вы могли бы потенциально использовать UTF-8 в части после идентификатора, и это не имело бы никакого значения, если бы оно было искажено. Конечно, это, вероятно, работает только в определенных условиях ...
источник
Не уверен, что это хорошая идея, но, как уже упоминалось в других комментариях, и, как я понимаю, многие символы Юникода действительны в HTML5-URL .
Например, в
href
документах говорится http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :Тогда определение «действительного URL» указывает на http://url.spec.whatwg.org/ , который определяет кодовые точки URL как:
Затем термин «кодовые точки URL» используется в нескольких частях алгоритма синтаксического анализа, например, для относительного состояния пути :
Также валидатор http://validator.w3.org/ проходит для URL, например
"你好"
, и не проходит для URL с символами, такими как пробелы."a b"
Связанный: Какие символы делают URL недействительным?
источник
"你好"
и"a b"
) должны быть закодированы в процентах при выполнении HTTP-запроса, верно?"a b"
я уверен , что да , так как пространство не в списке разрешенных выше. Ибо"你好"
, определенно, это лучшая идея для процентного кодирования, но я не знаю, является ли это просто вопросом «реализации не достаточно хороши» или «стандарт так говорит». Стандарт HTML, кажется, разрешает эти символы. Но я думаю, что это определяется стандартом HTTP, а не HTML. См. Также: stackoverflow.com/questions/912811/…Поскольку все эти комментарии верны, следует отметить, что поскольку ICANN одобрила арабские (персидские) и китайские символы для регистрации в качестве доменного имени, все компании-производители браузеров (Microsoft, Mozilla, Apple и т. Д.) Должны поддержка Unicode в URL без какой-либо кодировки, и они должны быть доступны для поиска в Google и т. д.
Таким образом, эта проблема будет решена как можно скорее.
источник
Используйте процентную форму . Некоторые (в основном старые) компьютеры, работающие под управлением Windows XP, например, не поддерживают Unicode, а скорее кодировки ISO. Вот почему были изобретены процентные URL-адреса. Кроме того, если вы дадите пользователю напечатанный на бумаге URL-адрес, содержащий символы, которые нелегко набрать, этому пользователю может быть сложно набрать его (или просто проигнорировать). Процентно-закодированная форма может даже использоваться на многих из самых старых машин, которые когда-либо существовали (хотя они, конечно, не поддерживают Интернет).
Однако есть и обратная сторона: символы в процентном кодировании длиннее оригинальных, что может привести к очень длинным URL-адресам. Но просто попробуйте проигнорировать это или используйте сокращение URL ( в этом случае я бы порекомендовал goo.gl , который создает URL длиной 13 символов). Кроме того, если вы не хотите регистрировать учетную запись Google, попробуйте bit.ly (bit.ly делает несколько длинных URL-адресов длиной 14 символов).
источник
Для меня это правильный путь, это просто сработало:
Это сработало, и теперь ссылки отображаются правильно:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام
Ссылка найдена на:
http://www.galeriejaninerubeiz.com/newsite/news
источник