为什么','翻译成'%2C+'?

问题描述 投票:0回答:1

我正在使用 Node.js v21.7.1 开发一个项目,我从 MariaDB 数据库查询名字和姓氏,然后将它们传递回客户端。

在我的 SQL 中我使用:

CONCAT(`t2`.`vcSurName`, ',', `t2`.`vcFirstName`) AS vcName

我的客户收到此消息并将其添加到“SELECT”HTML 标记中,我可以看到名称显示正确,例如显示“Platten,Simon”,这现在是表单的一部分,提交后,我可以看到服务器收到的名称为:

'Platten%2C+Simon'

在我使用的服务器上:

var strUserName = decodeURIComponent(objFields['biUID']);

然后我将名称拆分为一个数组:

var aryName = strUserName.split(', ');

这就是出错的地方,decodeURIComponent 只将 %2C 翻译回逗号,但 aryName 的内容现在包含:

[Platten,+Simon]

我需要做什么,因为 + 是对空格进行编码的结果,但它没有被解码...

javascript decodeuricomponent
1个回答
0
投票

decodeURIComponent()
仅处理字符串的百分比编码部分。解码
+
字符需要单独完成。

另请参阅 MDN decodeURIComponent() 文章的

从 URL 解码查询参数
章节,其中建议使用以下代码:

function decodeQueryParam(p) {
  return decodeURIComponent(p.replace(/\+/g, " "));
}

decodeQueryParam("search+query%20%28correct%29");
// 'search query (correct)'
© www.soinside.com 2019 - 2024. All rights reserved.