Url编码引号和空格

Sam*_*amo 28 c# asp.net-mvc urlencode

我有一些使用JavaScript编码的查询文本,但我遇到了一个用例,我可能需要在服务器端编码相同的文本,并且发生的编码不一样.我需要它是一样的.这是一个例子.

我进入"I like food"搜索框并按下search按钮.JavaScript将其编码为%22I%20like%20food%22

假设我在服务器端的请求对象上获得与字符串相同的值.它看起来像这样:"\"I like food\""

当我使用时HttpUtility.UrlEncode(value),结果是"%22I+like+food%22".如果我使用HttpUtility.UrlPathEncode(value),结果是"\"I%20like%20food\""

所以UrlEncode编码我的引号,但使用+空格字符.UrlPathEncode正在编码我的空格但不编码我的转义引号.

我真的需要它来做两件事,否则搜索代码完全对我不利(我无法控制搜索代码).

提示?

por*_*ges 54

UrlPathEncode不会逃脱,"因为它们不需要在路径组件中进行转义.

Uri.EscapeDataString 应该做你想做的事.

  • 谢谢!奇怪的是,很少有人知道这一点. (2认同)

Mit*_*ers 9

有几个选项可用,最快的可能是使用UrlEncode然后执行string.replace来交换+字符%20.

就像是

HttpUtility.UrlEncode(input).Replace("+", "%20");
Run Code Online (Sandbox Code Playgroud)