Кодировка URL - незаконная замена символов - PullRequest
1 голос
/ 24 декабря 2010

Я делаю некоторые перенаправления URL в проекте, над которым я сейчас работаю. Я новичок в веб-разработке, и мне было интересно, как лучше всего удалять любые символы нелегального пути, такие как '? и т.д.

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

Я пробовал UrlEncode и HTMLEncode, но UrlEncode не обслуживает? и HTMLEncode не обслуживает '

например. Если бы я использовал следующее:

Dim name As String = "Dave's gone, why?"
Dim url As String = String.Format("~/books/{0}/{1}/default.aspx", bookID, name)

Response.Redirect(url)

Я пробовал переносить URL так:

Dim encodedUrl As String = Server.UrlEncode(url)

И

Dim encodedUrl As String = Server.HTMLEncode(url)

Заранее спасибо.

P.S. Счастливого Рождества

Ответы [ 2 ]

0 голосов
/ 24 декабря 2010

Попробуйте следующее,

String.Format("~/books/{0}/{1}/default.aspx", bookID, Server.UrlEncode(name))  

String.Format("~/books/{0}/{1}/default.aspx", bookID, 
    Server.UrlEncodeComponent(name))

Я думаю, что его HttpUtility.UrlEncodeComponent, пожалуйста, см. Msdn для получения дополнительной информации.

0 голосов
/ 24 декабря 2010

Спецификация для URL (RFC 1738, Dec. '94) создает проблему, поскольку ограничивает использование разрешенных символов в URL только ограниченным подмножеством набора символов US-ASCII:

"... Только буквенно-цифровые символы [0-9a-zA-Z], специальные символы" $ -_. +! * '(), "[Не включая кавычки - ed] и зарезервированные символы, используемые для ихЗарезервированные цели могут использоваться без кодирования в URL. "

Так что я думаю, что вам нужно беспокоиться о ?, и в моей системе

URL Encode;новообращенные:% 7e% 2fbooks% 2f1% 2fDave's + ушел% 2c +, почему% 3f% 2fdefault.aspx

Теперь, вы используете какой-либо URL-адрес, переписывающий в это ??

...