Желательно, чтобы в URL были символы не ascii? - PullRequest
6 голосов
/ 13 января 2011

В настоящее время мы работаем над проектом I18N. Мне интересно, каковы сложности с наличием не-ascii символов в URL. Если это не рекомендуется, каковы альтернативы для решения этой проблемы?

РЕДАКТИРОВАТЬ (в ответ на ответ Максима): Сайт будет локальным для конкретной страны, и мне не нужно беспокоиться о доступе к этому сайту со стороны широкой общественности. Я понимаю, что с точки зрения удобства использования, Это действительно раздражает . Какие еще технические проблемы связаны с этим?

Ответы [ 4 ]

3 голосов
/ 13 января 2011

Можно использовать не-ASCII / нелатинские доменные имена, используя IDNA .Кроме того, вы всегда можете использовать процентное кодирование (например, %20 для пробела) в URL. RFC 3986 рекомендует кодирование UTF-8 в сочетании с процентами:

данные должны сначала кодироваться в виде октетов в соответствии с кодировкой символов UTF-8;тогда только те октеты, которые не соответствуют символам в незарезервированном наборе, должны кодироваться в процентах.(...) Например, символ A будет представлен как "A", символ LATIN CAPITAL LETTER A WITH GRAVE будет представлен как "% C3% 80", а символ KATAKANA LETTER A будет представлен как "%E3% 82% A2 ".

Современные клиенты (веб-браузеры) могут преобразовывать между кодировкой процентов и Unicode, поэтому URL-адрес передается как ASCII, но выглядитдовольно для пользователя.

Убедитесь, что вы используете веб-фреймворк / CMS, который также понимает эту кодировку, для упрощения ввода URL-адресов веб-мастерами / редакторами контента.

2 голосов
/ 13 января 2011

Я бы сказал нет.Причина проста -> если вы полагаетесь на широкую публику, для людей будет большой проблемой ввести ваш URL.Я живу в "кириллическом" мире, есть возможность создавать кириллические ссылки, но это ни у кого не получается, потому что даже нам лень сменить язык и привыкнуть к латинице ...

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

1 голос
/ 13 января 2011

зависит от целевых пользователей ... например, Nürnberg.de также просматривает nuernberg.de , чтобы сделать его легкодоступным для родного немецкого пользователя (так как немецкая клавиатура используется по умолчанию и имеет все 4 дополнительных ключевые символы (öäüß), доступные для всех говорящих на немецком языке), и не забывайте, что одна из целей I18N - предоставить конечному пользователю ощущение родного языка. У пользователей Mac и Linux есть еще более инициативный подход, например, нажав Alt + u на Mac, вы получите умные символы, чтобы справиться с вводом I18N.

Мне просто интересно, каковы осложнения, связанные с не-ASCII символы в URL.

но, как вы сформулировали свой вопрос, похоже, что ваш вопрос больше касается URI, а не URL ... и вы пытаетесь объединить URN с не-ascii символами внутри URI. в этом нет никаких сложностей, если вы знаете, где и как анализировать ваш URN на сервере (например, : в случае сервера на основе Django, URN можно анализировать и обрабатывать с помощью регулярных выражений внутри url.py ) ... все, что вам нужно иметь в виду, это то, что при эволюции web2.0 (на основе Ajax javascript) все в основном выполняется в utf-8, так как спецификация Javascript требует кодировки utf-8. И, таким образом, utf-8 превратился в своего рода стандарт. придерживайтесь спецификаций кодирования utf-8, и вы вряд ли столкнетесь с какими-либо сложностями при разборе URI и обходе его.

например. проверьте URI http://de.wikipedia.org/wiki/Fürth или http://hi.wikipedia.org/wiki/जर्मनी .. независимо от того, какую кодировку вы пишете в адресной строке, браузер переведет его в UTF-8 и отправит на сервер.

ПРИМЕЧАНИЕ: кроме UTF-8, есть некоторые символы, которые кодируются с использованием процентного кодирования ... подробнее об этом можно узнать здесь ...

http://en.wikipedia.org/wiki/Percent-encoding

0 голосов
/ 13 января 2011

Вы можете использовать не-ascii символы в URL, но это ужасно, потому что специальные символы должны быть закодированы следующим образом http://www.w3schools.com/tags/ref_urlencode.asp

...