如何防止URI中特殊符号的转换?

时间:2012-10-30 13:59:21

标签: c# unicode uri

我试图使用Win8-Searchbar扫描http-Server。

string uriString = "http://myServer:myPort/?ItemList,SQLFilter=Title LIKE '%" + searchTerm + "%'";
Uri uri = new Uri(uriString);

像“%”,“”(空白)这样的特殊标志正在转变为“%25”,“%20”......

如何防止这些转变? http-Server不理解它:(

1 个答案:

答案 0 :(得分:2)

根据w3schools

  

只能使用ASCII字符集通过Internet发送URL。

     

由于URL通常包含ASCII集之外的字符,因此必须将URL转换为有效的ASCII格式。

     

URL编码用“%”后跟两个十六进制数字替换不安全的ASCII字符。

这就是网址编码发生的原因,而且无法避免它。

在服务器端,您需要使用HttpUtility.UrlDecode来解码字符串。


与问题无关,但非常重要:

在URL中显示SQLFilter=Title LIKE '%" + searchTerm + "%'"之类的内容代表了一个巨大的安全问题。 任何人都可以修改它以在您的数据库上运行任意语句