Javascript 在构造mailto链接时对组件进行编码

Javascript 在构造mailto链接时对组件进行编码,javascript,mailto,encodeuricomponent,Javascript,Mailto,Encodeuricomponent,当我使用encodeURIComponent对主体进行编码时,如下图所示,如果主体中有空格,则生成的链接将断开,如下所示: 有空间 body = "http://www.sample.com/sample/explore?itemId=123&type=sample&name=name with space" var newLink = "mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encod

当我使用encodeURIComponent对主体进行编码时,如下图所示,如果主体中有空格,则生成的链接将断开,如下所示:

有空间

body = "http://www.sample.com/sample/explore?itemId=123&type=sample&name=name with space"

var newLink = "mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body);

window.location = newLin
如何修复它并创建有效的url


console.log正确显示编码的url,但在outlook中链接已断开。它应该显示为正确的超链接

您是否尝试在
正文
变量中用
%20
替换
空格

body = "http://www.sample.com/sample/explore?itemId=123&type=sample&name=name%20with%20space"
我建议您使用该工具将纯文本编码到querystring中。例如,如果需要传递换行符(
\n
),请将
%0A
用于换行符
\n
,将
%0D
用于回车符
\r
。查看ASCII表以了解编码:第二列(Hx=十六进制ASCII表示)以
%
作为前缀,对应于第五列中报告的红色字符(Chr=字符),即,例如:


空格字符(表中第五列Chr)=
%20
(表中第二列Hx)≅
+
(阅读答案)

您是否尝试用
%20
替换
正文
变量中的
空格

body = "http://www.sample.com/sample/explore?itemId=123&type=sample&name=name%20with%20space"
我建议您使用该工具将纯文本编码到querystring中。例如,如果需要传递换行符(
\n
),请将
%0A
用于换行符
\n
,将
%0D
用于回车符
\r
。查看ASCII表以了解编码:第二列(Hx=十六进制ASCII表示)以
%
作为前缀,对应于第五列中报告的红色字符(Chr=字符),即,例如:


空格字符(表中第五列Chr)=
%20
(表中第二列Hx)≅
+
(阅读答案)

您是否确保这不是因为浏览器在地址栏中显示未转义的版本?您是否尝试转义而不是encodeURIComponent?是否执行
控制台.log(newLink)
和您将看到它正在正确编码。您是否确保这不是因为浏览器在地址栏中显示了未替换的版本?您是否尝试了escape而不是encodeURIComponent?是否执行
console.log(newLink)
您将看到它编码正确。