JavaScript 模板文字中的换行符编码

JavaScript line break encoding in template literals

在模板文字中,换行符可以用 \n 或字符串中的文字换行符表示。根据文档和从打印到控制台,这两种方法没有区别。

但是,在使用 Axios 时,我在 POST 的数据字段中发送了一个带有 \n 的字符串。服务器错误地解释了这个请求并合并了字符串中的行。当我更改字符串中所有带有文字换行符的 \n 字符时,服务器按预期解释请求。这里发生了什么?这两种方式在编码上有区别吗?

// this works
    await axios.post(`${myURL}/`, {
            password: `${username}@${server}
            ${password}`
        });

// this doesn't work
    await axios.post(`${myURL}/`, {
            password: `${username}@${server}\n${password}`
        });

Is there a difference in encoding between the two methods?

是的,您的第一个代码还包括服务器和密码之间的一些非换行符 space:

            ${password}`
^^^^^^^^^^^^

要使它们完全相同,请在 \n 之后添加 space,例如:

await axios.post(`${myURL}/`, {
        password: `${username}@${server}\n             ${password}`
    });

(您可能只需要在 \n 之后添加一个 space 即可正确解析它 - 稍微试验一下)