Javascript encodeURIComponent()忽略换行符
我正在尝试对文本区域中的字符串进行编码,以便为mailto链接输出编码结果。空格和特殊字符的编码很好,但换行符不是,它们只是被编码为一个空格。 如何对换行符进行编码Javascript encodeURIComponent()忽略换行符,javascript,encoding,character-encoding,Javascript,Encoding,Character Encoding,我正在尝试对文本区域中的字符串进行编码,以便为mailto链接输出编码结果。空格和特殊字符的编码很好,但换行符不是,它们只是被编码为一个空格。 如何对换行符进行编码 if (id == 'subject' || id == 'body') { let str = output.innerText; str = encodeURIComponent(str); // str = str.replace(/\n/g, "%0A"
if (id == 'subject' || id == 'body') {
let str = output.innerText;
str = encodeURIComponent(str);
// str = str.replace(/\n/g, "%0A").replace(/ /g, "%20").replace(/&/g, "%26");
output.innerText = str;
}
我也尝试过这个方法,但也不起作用:
str = encodeURIComponent(str).replace(/\n/g, '%0D%0A');
以下是我的输出当前的外观:
mailto:mckeever02@gmail.com?body=Testing%20Should%20be%20a%20line%20break%20before%20this%20sentence
请注意,换行符刚刚被编码到%20
(空格)。有什么想法吗?请参阅我的示例片段。
我只是使用innerHtml从textarea中读取数据,以获得新行,并使用简单的encodeURIComponent。新行被传输到%0A
,空格被传输到
%20
可能您的问题是使用innerText而不是innerHTML。innerText不采用新行
const text=document.querySelector('textarea').innerHTML;
console.log(encodeURIComponent(text))
试验
aaaa
bbbb-ccc
dddd
换行符替换为%0A
。使用值
从文本区域获取文本,而不是innerHTML
/innerText
const ta=document.getElementById(“ta”);
const val=ta.value;
log(encodeURIComponent(val))代码>
一线
第二线
是.value
存在是有原因的。