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 即可正确解析它 - 稍微试验一下)
在模板文字中,换行符可以用 \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 即可正确解析它 - 稍微试验一下)