Windows 记事本不支持换行符 '\n'。

17

我在我的iPhone应用程序中将文本数据输出到文件中。当使用Windows记事本打开时,数据全在一行上,并且应该有换行符的地方出现了一个块字符(显示为未识别的字符或其他什么东西)。但是,在使用Windows写字板打开时,它会正常显示。
我的代码有什么问题吗?当我想要新的一行时,我只是简单地输出'\n'。

输入图像描述

注意:在Mac上的TextEdit、MS Word以及Windows上的其他编辑器中都能正常工作。


相关链接:http://superuser.com/questions/362087/notepad-ignoring-linebreaks - icc97
3
注意:从2018年5月开始,记事本终于支持\n了!请参见我的答案。链接:https://dev59.com/FGoy5IYBdhLWcg3wHqmC#50241693 - VonC
4个回答

23

Windows默认使用\r\n作为行尾标记。Notepad只有识别这个标记,其他文本编辑器可能知道其他行尾样式并能正确地呈现。

编辑
正如VonC的答案所述,Notepad已经更新(在2018年)可以识别非Windows行尾序列。


所以我在bash脚本中执行echo -e "blah-blah\r\n more text",但在记事本中仍然没有显示为两行。我做错了什么? - Ray
@Ray 在Win7记事本中,它至少显示为两行 - golimar

8

当我想要新的一行时,我只需输出 '\n'。

从2018年5月开始(6年后),您将获得一个新行!

请参见Notepad中扩展行结束支持的介绍,由Michel Lopez(和他的推文)提供。

多年来,Windows记事本仅支持包含Windows行尾(EOL)字符 - 回车符(CR)和换行符(LF)的文本文档。这意味着记事本无法正确显示在Unix、Linux和macOS中创建的文本文件的内容。
今天,我们很高兴地宣布我们已经解决了这个问题!从当前的Windows 10 Insider构建开始,记事本将像往常一样支持Unix/Linux行尾(LF)、Macintosh行尾(CR)和Windows行尾(CRLF)。
记事本中创建的新文件默认使用Windows行尾(CRLF),但现在可以查看、编辑和打印现有文件,并正确地维护文件的当前行尾格式。还要注意,状态栏指示当前打开文件的检测到的EOL格式。
看到一个.bashrc最终被正确地显示了!

https://msdnshared.blob.core.windows.net/media/2018/05/Notepad-after.png


3
这是因为在Windows系统中\n并不能完全代表一行的换行符。使用\n是“Unix”风格的换行方式。
在Windows系统下,有像Notepad++这样的文本编辑器可以同时处理两种换行符,但Notepad在这方面真的很傻。
我建议你在你的iPhone应用程序中创建一个设置选项,让用户可以选择Windows或Unix换行符,这样就由用户自己负责了 :-)

1
最近遇到了这个问题,我一直认为是我的代码出了问题,但事实证明记事本在正确格式下渲染文件存在问题。
我们该如何解决呢?
目前没有可用的记事本修复程序,但以下是可以执行的解决方法列表,以便正确读取内容。
解决方法:
1.您可以使用Windows WordPad打开文件或将文件内容粘贴到WordPad中,然后再粘贴回记事本。这应该可以解决问题。
2.您也可以使用Notepad ++打开文件,它是第三方文本阅读器,可以安装在Windows系统上。
3.微软最近(2018年10月)宣布,在Windows 10版本1809中已经修复了记事本的问题,因此更新您的系统到Windows 10可以解决此问题(1809之前的Windows版本受到影响)。
微软花了33年时间才修复这个问题!天啊,这太长了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接