Unicode 没有隐藏字符的概念,它表示某些原始文件中的换行符,但不会导致渲染中的换行符。Unicode 对纯文本数据进行编码,它的换行控制字符在呈现纯文本时会产生影响。
这里重要的是如何使用这些文件。如果它们需要用纯文本编辑器处理,那么你需要决定:要么在默认渲染中复制换行符,要么在创建文件时省略它们。你不能让它们隐形。而不同的文本编辑器,如记事本和 Emacs,可能会使用不同的行控制约定;一个程序的行尾是另一个程序的段尾。
如果文件仅由您创建的程序处理,那么您可以使用您喜欢的任何约定。最合乎逻辑的是:“行和段落分隔符。Unicode 标准提供了两个明确的字符,U+2028 行分隔符和 U+2029 段落分隔符,用于分隔行和段落。它们被认为是 Unicode 纯文本中表示行和段落边界的默认形式。在每个行分隔符之后开始一个新行。在每个段落分隔符之后开始一个新段落。由于这些字符是分隔符代码,因此不必以它们开始第一行或段落或结束最后一行或段落。这样做将表明后面有一个空的段落或行。段落分隔符可以插入文本段落之间。它的使用允许创建纯文本文件,这些文件可以在接收端以不同的线宽进行布局。行分隔符可用于指示无条件的行结束。”
http://www.unicode.org/versions/Unicode6.1.0/ch16.pdf(PDF中的第 6 和 7 页)
注意 U+2028 和 U+2029 通常不被文本编辑器理解。它们适用于以纯文本格式存储数据。当要渲染文本时,渲染软件可以选择忽略原来的分割线,把 U+2028 当作一个空格,除非前面有一个连字符(这是一个没有更高级别无法解决的问题)信息:以“foo-”结尾的行和以“bar”开头的行可以表示单词“foobar”作为断行的连字符,或连字符的复合词“foo-bar”,或者在某些情况下,组合“foo-bar”)。