Должен ли я использовать акцентированные символы в URL-адресах?
при создании веб-контента на языках, отличных от английского, возникает проблема поиска оптимизированных и удобных для пользователя URL-адресов.
Мне интересно, является ли лучшей практикой использовать де-акцентированные Буквы в URL-адресах-рискуя, что некоторые слова имеют совершенно разные значения с определенными акцентами и без них-или лучше придерживаться использования неанглийских символов, где это уместно, жертвуя читаемостью этих URL-адресов в менее продвинутых средах (например, MSIE, view source).
"экзотические" буквы могут появляться где угодно: в заголовках документов, в тегах, в именах пользователей и т. д., Поэтому они не всегда находятся под полным контролем сопровождающего веб-сайта.
возможным подходом, конечно, было бы создание альтернативных-без акцента-URL-адресов, которые также указывали бы на исходный пункт назначения, но я хотел бы узнать ваше мнение об использовании акцентированных URL-адресов как первичный документ идентификаторы.
5 ответов:
столкнувшись с подобной проблемой, я воспользовался переписывание URL разрешить доступ к таким страницам либо с акцентом, либо без акцента. Фактический URL-адрес будет что-то вроде
http://www.mysite.com/myresume.htmlи функция перезаписи + перевода символов позволяет эту ссылку
http://www.mysite.com/myresumé.htmlдля загрузки одного и того же ресурса. Так что отвечу на ваш вопрос, как то первичный идентификатор ресурса, я ограничиваюсь 0-9, A-Z, a-z и случайные дефисы.
здесь нет никакой двусмысленности:RFC3986 говорит нет, то есть URI не может содержать символы юникода, только ASCII.
совершенно другое дело, как браузеры представляют закодированные символы при отображении URI, например, некоторые браузеры будут отображать пробел в URL вместо "%20". Вот как работает IDN: строки punycoded кодируются и декодируются браузерами на лету, поэтому, если вы посетите café.com ты действительно в гостях xn--caf-dma.com. то, что кажется символы юникода в URL-адресах на самом деле являются только "визуальным сахаром" со стороны браузера: Если вы используете браузер, который не поддерживает IDN или unicode, закодированная версия не будет работать, потому что базовое определение url-адресов просто не поддерживает его, поэтому для его последовательной работы вам нужно % encode.
учитывая, что URL-адреса с акцентами часто имеют тенденцию выглядеть так:
http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant...что не так уж и приятно... Я думаю, что мы все еще будем использовать де-акцентированные URL-адреса в течение некоторого времени.
хотя, все должно стать лучше, так как акцентированные URL-адреса теперь принимаются веб-браузерами, кажется.
firefox 3.5, который я сейчас использую, отображает URL-адрес хорошим способом, а не с %stuff, кстати ; это кажется "новым" с firefox 3.0 (см. Firefox 3: UTF-8 поддержка в строке местоположения); так что, вероятно, не поддерживается в IE 6, по крайней мере-и все еще слишком много людей используют этот: - (
Может быть, URL без акцента выглядят не лучшим образом, что может быть ; но, тем не менее, люди привыкли к ним и, похоже, в целом понимают их довольно хорошо.
вы должны избегать символов не ASCII в URL-адресах, которые могут быть введены в браузере вручную пользователями. Это нормально для встроенных ссылок, предварительно закодированных сервером.
мы выяснили, что браузер может кодировать URL по-разному, и очень трудно понять, какую кодировку он использует. Смотрите мой вопрос по этому вопросу,
в полном URL-адресе есть несколько областей, и каждый из них может иметь разные правила. Протокол является простым ASCII. Запись DNS регулируется правилами IDN (международные доменные имена) и может содержать (большинство) символов Юникода. Путь (после первого /), имя пользователя и пароль могут снова быть всем. Они экранируются (как %XX), но это всего лишь байты. Что такое кодировка этих байтов трудно узнать (интерпретируется сервером http). Часть параметров (после первый ?) передается "как есть" (после %XX unescapeing) в некоторые серверные приложения (php, asp, jsp, cgi), и как это интерпретирует байты-это другая история). Рекомендуется, чтобы путь / пользователь / пароль / аргументы были utf-8, но не обязательными, и не все это уважают.
таким образом, вы определенно должны учитывать не-ASCII (мы больше не в 80-х годах), но именно то, что вы делаете с этим, может быть сложно. Попробуйте использовать Unicode и держаться подальше от устаревших кодовых страниц, пометьте свой содержание с правильной кодировкой / кодировкой, если вы можете (используя meta в html, языковые директивы для asp / jsp и т. д.)
Comments