字符 \n 和 \r 不会在 URL 中呈现为新行
Characters \n and \r are not rendered into new lines in a URL
{服务器url}/store?keyword=test1\ntest2\rtest3\r\ntest4
当前URL将关键字参数存入数据库,
但不知何故 \n 和 \r 字符不会呈现为新行。它们存储为 \n 和 \r.
但是当我使用 URL-编码时它起作用了。
\n - %0A
\r - %0D
{服务器 url}/store?keyword=test1%0Atest2%0Dtest3%0D%0Atest4
有谁知道到底发生了什么?
我找到了解释:
实际上 C、C++、Java 和许多其他语言允许反斜杠转义样式,从而改变 escape character to represent some control character/非打印字符后面的字符的含义,例如:
- \n 换行
- \r马车return
- \t 选项卡
- \b 退格
- 等等
URL 和 URI 使用 percent-encoding 来引用具有特殊含义的字符,例如换行符、制表符、回车 return... 所以只要有一个 URL 中的 \n 将被视为与“n”连接的“\”。
在结果中,存储在数据库中的值将是一个“\n”序列,而不是预期的换行符。
{服务器url}/store?keyword=test1\ntest2\rtest3\r\ntest4
当前URL将关键字参数存入数据库,
但不知何故 \n 和 \r 字符不会呈现为新行。它们存储为 \n 和 \r.
但是当我使用 URL-编码时它起作用了。
\n - %0A
\r - %0D
{服务器 url}/store?keyword=test1%0Atest2%0Dtest3%0D%0Atest4
有谁知道到底发生了什么?
我找到了解释:
实际上 C、C++、Java 和许多其他语言允许反斜杠转义样式,从而改变 escape character to represent some control character/非打印字符后面的字符的含义,例如:
- \n 换行
- \r马车return
- \t 选项卡
- \b 退格
- 等等
URL 和 URI 使用 percent-encoding 来引用具有特殊含义的字符,例如换行符、制表符、回车 return... 所以只要有一个 URL 中的 \n 将被视为与“n”连接的“\”。
在结果中,存储在数据库中的值将是一个“\n”序列,而不是预期的换行符。