Javascript encodeURIComponent()忽略换行符

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"

我正在尝试对文本区域中的字符串进行编码,以便为mailto链接输出编码结果。空格和特殊字符的编码很好,但换行符不是,它们只是被编码为一个空格。 如何对换行符进行编码

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
存在是有原因的。