【问题标题】:The + character in the parameter is returned as a space [duplicate]参数中的 + 字符作为空格返回 [重复]
【发布时间】:2021-09-13 11:17:28
【问题描述】:

我在 asp.net 核心项目上创建了自定义链接。我试图在控制器的链接中获取参数。

我需要 prmtr1 和 prmt2 值,但 prmtr1 中的 '+' 字符返回 ' '(空格)值。我必须得到'j+vNMbBKUGU=',但我得到'j vNMbBKUGU='

 link: blablabla/contract?prmtr1=j+vNMbBKUGU=&prmtr2=BIIOnHXUgGM=

如果我将空格字符更改为 + 字符,我的问题就解决了,但我认为这不是一个好主意。我希望你能帮助我。谢谢。

【问题讨论】:

  • 嗨,这个字符串是动态的。我用 md5 加密身份证号码。所以 + 字符不是我给它的字符。
  • 您可以执行字符串替换,或者您可以执行 POST 而不是 get,这样该值就不会出现在 URL 中。或者您可以使用 base62 编码而不是 base64。
  • 不清楚您是如何构建链接的,但在 URL 中,+ 表示空格字符。 URLS 中也有许多无效字符。构建 URL 时需要小心,并确保正确转义。

标签: c# asp.net asp.net-mvc asp.net-core asp.net-web-api


【解决方案1】:

asp.net 假定“+”字符是编码的“”,因此将其转换为空格字符。 在 javascript 中,您可以在发送前使用函数 encodeURIComponent(string) 对参数进行编码。

您可以在此处阅读有关该功能的更多信息:https://www.w3docs.com/snippets/javascript/how-to-encode-javascript-url.html#the-encodeuricomponent-function-5

您可以在此处找到有关为什么会发生这种情况的更多信息:https://stackoverflow.com/a/2678602/16154479

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 2014-05-30
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2018-09-27
    • 1970-01-01
    • 2014-03-28
    相关资源
    最近更新 更多