我正在使用 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]
我需要做什么,因为 + 是对空格进行编码的结果,但它没有被解码...
decodeURIComponent()
仅处理字符串的百分比编码部分。解码+
字符需要单独完成。
另请参阅 MDN decodeURIComponent()
文章的
从 URL 解码查询参数章节,其中建议使用以下代码:
function decodeQueryParam(p) {
return decodeURIComponent(p.replace(/\+/g, " "));
}
decodeQueryParam("search+query%20%28correct%29");
// 'search query (correct)'