行尾字符LF在HTML textarea中自动更改为CRLF

时间:2018-11-14 10:41:07

标签: html browser operating-system textarea text-editor

我注意到,如果将所有LF放入HTML文本区域,它们都会自动更改为CRLF。

■问题:

  1. 在何处导致此行为?

    • 这是否是由于Windows操作系统引起的,即如果使用其他操作系统(例如MacOS)不会发生这种情况? (我只是在Windows机器上经历过,但尚未在Mac上进行测试...)
    • 还是这取决于浏览器? (我已经在Chrome,IE和Firefox上看到了这种行为。尚未在Safari上进行测试...)
    • 还是这仅在我的编辑器上发生? (即我正在使用sakura编辑器)
  2. 如果可能的话,如何保存LF以便不将其更改为CRLF?

■重现此步骤:

  1. 找到可以在其中输入文字的区域,例如以下w3school网站。 https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea

  2. 使用可以检测行结束符的编辑器(至少可以确定带有至少LF的2行)来编写文本(以便确保您具有一些LF)。 ※我以Sakura编辑器为例。

  3. 将步骤2中准备的文本复制并粘贴到文本区域。

  4. 将文本复制到文本区域后,这一次,复制文本区域的全部内容。

  5. 将文本区域的内容粘贴回您的编辑器。

  6. 所有行尾字符都变为CRLF。

■P.S. 请查看屏幕截图以获取详细信息

  • 左侧是带有3个LF的原始文本
  • 右侧是从文本区域复制回的内容,所有LF都变为CRLF)
  • “↓”表示低频
  • “⏎”表示CRLF

谢谢

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为我至少找到了一些有用的信息,我会留下记录,以防万一有人寻求类似问题的答案。

  1. 何处以及什么原因导致这种行为?
  

出于历史原因,出于三种不同目的,使用三种不同的方式对元素的值进行了标准化。原始值是原始设置的值。它没有规范化。 API值是在值IDL属性中使用的值。进行了规范化,以便换行符使用U + 000A LINE FEED(LF)字符。最后,还有在本规范中的表单提交和其他处理模型中使用的值。进行了规范化,以便换行符使用U + 000D回车符U + 000A换行符(CRLF)字符对,此外,如果有必要,请提供元素的wrap属性,还可以插入其他换行符以按给定的宽度换行文本。

  • 有关更多信息,请阅读: https://www.w3.org/TR/html5/forms.html#the-textarea-element

    1. 如果可能的话,如何保存LF以便不将其更改为CRLF? 我想有很多方法。在提交表单之前,使用javascript将所有/ r / n替换为/ n可能是一种客户端解决方案。或者,如果完全是我的情况,如果不必在客户端进行处理,我会在服务器端执行替换过程,以强制将所有行尾字符转换为LF。