Что делать с типом URL сообщества, например Last.FM или Wikipedia?

Я пытаюсь понять, как мне работать с символами в URLs , потому что я создаю сайт, на котором пользователь может хранить контент и перейти на страницу контента, указав его имя в URL .

поэтому, что-то вроде Wikipedia или сайта Last.FM

Я вижу на сайте, пользователь может написать что-то вроде
http://it.wikipedia.org/wiki/Trentemøller и страница художника может быть достигнута.

после загрузки страницы, если я скопирую URL-адрес, который я вижу как:
http://it.wikipedia.org/wiki/Trentemøller но если я вставляю его в текстовый редактор, он будет вставлен как
http://it.wikipedia.org/wiki/Trentem%C3%B8ller

поэтому char ø вставляется как %C3%B8

конечно же, для URL-адресов, подобных этому (страница художника Такеши Кобаяси)

http://www.last.fm/music/小林武史
http://www.last.fm/music/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2

Если я цифра первая или вторая, страница работает в любом случае, почему?

Я думаю, что я должен что-то сделать с помощью .htacces и mod_rewrite но я не уверен, что специальные символы автоматически преобразуются в специальные символы url?

и затем, как я могу сделать, чтобы PHP сделал правильный запрос с именем содержимого?

если у меня есть таблица вроде

 table_users - username - age - height - weight - sex - email - country 

Я могу с mod_rewrite написать адрес, например http://mysite.com/user/bob чтобы получить username bob из table_users но как насчет http://mysite.com/user/小林武史 ?

здесь я показываю простой пример того, что я думаю делать:

 #.htaccess RewriteEngine On RewriteRule ^(user/)([a-zA-Z0-9_+-]+)([/]?)$ user.php?username=$2 <?php // this is the page user.php // this is the way I use to get the url value print $_REQUEST["username"]; ?> 

это работает, но оно ограничено [a-zA-Z0-9 _ + -], как быть более совместимым со всеми символами, такими как другие, без потери слишком большой безопасности?

Кто-нибудь знал, как избежать неприятностей?

Большинство браузеров urlencode() 小林武史 до %E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2 .

Регламентируя свои правила .htaccess mod_rewrite , вы считали, что используете что-то вроде:

 RewriteEngine On RewriteRule ^(user/)(.+?)[/]?$ user.php?username=$2 

Попробуйте urlencode и urldecode

Редактировать :

Вот Visualy Описание кодирования и декодирования URL

http://blog.neraliu.com/wp-content/uploads/2009/10/url-encoding.png

Насколько я понимаю, каждый URL-адрес с не ASCII-символами сопоставляется с уникальным URL-адресом на основе ASCII. Это на самом деле функция на стороне клиента. Посмотрите на: http://kmeleon.sourceforge.net/bugs/viewbug.php?bugid=631, чтобы увидеть примеры и ссылки на RFC, охватывающие этот.