Как мне форматировать URL-адреса специальными / международными символами?
В настоящее время я стараюсь, чтобы URL-адреса "выглядели хорошо", чтобы:
www.myhost.com/this is a test, do you know how?
преобразуется в:
www.myhost.com/this_is_a_test_do_you_know_how
Я знаю, что некоторые международные буквы можно преобразовать (ü = ue, æ = ae, å = aa), некоторые символы можно удалить. Обычно я стараюсь, чтобы URL выглядел "хорошо", но разве это глупо?
Но что мне делать с китайскими, японскими и арабскими буквами, которые не имеют ничего общего с нашим западным форматом ASCII?
Мне действительно не нравится идея переписывать URL-адрес шестнадцатеричными кодами, поэтому сейчас я просто использую свой внутренний уникальный идентификатор, если URL-адрес содержит слишком много «непреобразуемых» символов.





На каком языке ты говоришь? PHP включает функцию filter_var (), которая, кажется, делает большую часть того, что вы хотите. См. http://us.php.net/manual/en/function.filter-var.php.
В общем, затраты на создание удобочитаемых строк ASCII из произвольных вводимых строк, вероятно, слишком велики, чтобы того стоить. Если пользователь даст вам китайский ханзи, что вы собираетесь делать? Найти в словаре и вывести результат в пиньинь?
Лучшее и наиболее общее решение - просто взять ввод, отформатировать его как UTF-8, а затем закодировать результат по URL-адресу. Это сделает нелатинский текст нечитаемым, но в любом случае хорошего общего решения для этих языков нет. Язык, который вы используете, почти наверняка имеет библиотечные функции, которые могут упростить эту задачу.
Но разве Google не пользуется URL-адресом? Если какой-то текст из данной статьи находится в URL-адресе, поисковая система Google будет использовать это? Но если действительно нет крутого способа обработки букв, отличных от ascii, то эти языки имеют более низкий приоритет в "google-internet?"
Взгляните, скажем, на http://ja.wikipedia.org/. Если навести указатель мыши на ссылки, они появятся в строке состояния как японские символы. Не выглядит так по-японски в адресной строке, когда вы переходите по ссылке, но с этим ничего не поделать. Не проверял, но я предполагаю, что все это в шестнадцатеричной кодировке utf8.
Не уверен, что понимаю. Какие у вас были проблемы, и какой эффект дала клавиатура? Я понимаю, что текст html полностью написан символами ASCII, и браузер интерпретирует и отображает закодированные символы, отличные от ascii, если это возможно, поэтому клавиатура не должна вводить его.
да, ja. сайт просто работает с японскими буквами, не беспокоясь о буквах ascii.
если вы используете .NET без
Server.URLEncode( myURL );
но если вы хотите использовать скандинавские символы или любой другой символ, который вы хотите, вам просто нужно настроить правило в компоненте URL ReWriting, потому что программное обеспечение DynamicWeb CMS использует все доступные символы, заменяйте только пробелы символами подчеркивания ('_')
как этот URL:
http://www.gynækologen.dk/Undersøgelser_og_behandlinger.aspx
вы можете увидеть в домене, а также ø в имени страницы
да, я думал об этом, но опять же, вы не можете просто вставить URL-адрес на какой-нибудь сайт, который его поддерживает. Нравится: validator.w3.org/… И привет тебе, балександре, я тоже датчанин :)
ааа похоже это просто имя хоста
Да, это возможно, но на мой взгляд очень идея ПЛОХОЙ. Я иногда сталкивался с этим, и знаете что? У меня были проблемы, потому что у меня не было «правильной» клавиатуры на компьютере, который я использовал в то время!