参数中的 + 字符作为空格返回 [重复]
Posted
技术标签:
【中文标题】参数中的 + 字符作为空格返回 [重复]【英文标题】: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 时需要小心,并确保正确转义。
【参考方案1】:
asp.net 假定“+”字符是编码的“”,因此将其转换为空格字符。 在 javascript 中,您可以在发送前使用函数 encodeURIComponent(string) 对参数进行编码。
您可以在此处阅读有关该功能的更多信息:https://www.w3docs.com/snippets/javascript/how-to-encode-javascript-url.html#the-encodeuricomponent-function-5
您可以在此处找到有关为什么会发生这种情况的更多信息:https://***.com/a/2678602/16154479
【讨论】:
以上是关于参数中的 + 字符作为空格返回 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java中的通用方法-如何将参数类类型作为返回类型返回[重复]
SQL Server中的小技巧(重复替换截取去空格去小数点后的位数)