Windows记事本不支持换行符' '

问题描述 投票:0回答:5

从我的 iPhone 应用程序中,我将数据从文本输出到文件。当用Windows记事本打开时,数据全部在一行上,并且应该有一个新行的地方出现了一个块字符(表明它是一个无法识别的字符或其他字符)。当用windows写字板打开时,它显示得很好。
我的代码会有问题吗?我只是输出' ' 当我想要一条新线时。

enter image description here

注意:它可以与其他编辑器(如 Mac 和 Windows 上的 textedit、MS Word)一起正常工作。

iphone objective-c newline text-files
5个回答
23
投票

Windows 默认使用

\r\n
作为行尾标记。记事本只能识别这一点,其他文本编辑器可能知道其他行结束样式并正确渲染。

编辑
正如 VonC answers 记事本进行了更新(2018 年),现在可以识别非 Windows 行尾序列。


8
投票

我只是输出’ ' 当我想要一条新线时。

从 2018 年 5 月(6 年后)开始,您将会 获得换行符!

请参阅 Michel Lopez 的“在记事本中引入扩展行结尾支持”(以及 他的推文

多年来,Windows 记事本仅支持包含 Windows 行结束符 (EOL) 的文本文档 - 回车符 (CR) 和换行符 (LF)。这意味着记事本无法正确显示在 Unix、Linux 和 macOS 中创建的文本文件的内容。

今天,我们很高兴地宣布我们已经解决了这个问题!

当前的 Windows 10 Insider 版本开始,记事本将照常支持 Unix/Linux 行结尾 (LF)、Macintosh 行结尾 (CR) 和 Windows 行结尾 (CRLF)。

默认情况下,在记事本中创建的新文件将使用 Windows 行结束符 (CRLF),但现在可以查看、编辑和打印现有文件,正确维护文件的当前行结束格式。

另请注意,状态栏指示检测到的当前打开文件的 EOL 格式。

看到

.bashrc
终于正确显示了!


3
投票

这是因为

\n
在 Windows 中并不代表完整的换行符。使用
\n
是进行换行的“Unix”方式。

在 Windows 上,有像 Notepad++ 这样的文本编辑器可以同时处理这两种情况,但 Notepad 在这方面确实很愚蠢。

我建议您在 iPhone 应用程序中创建一个设置,用户可以在 Windows 和 Unix 行结尾之间进行选择 - 那么这是他的责任:-)


1
投票

最近遇到了这个问题,我确信是我的代码正在执行此操作,但事实证明记事本在以正确的格式呈现文件时出现问题。

我们如何解决这个问题?

记事本的这种行为无法修复,但这里有一个可以执行的解决方法列表,以便正确读取内容。

解决方法

  1. 您可以使用 Windows 写字板打开该文件,或者将文件内容粘贴到写字板然后再粘贴回记事本。这应该可以解决问题。

  2. 您也可以使用Notepad++打开文件,它是第三方文本阅读器,可以安装在windows系统上。

  3. 微软最近(2018 年 10 月)宣布记事本已在 Windows 10 版本 1809 中修复,因此将系统更新到 Windows 10 应该可以解决此问题(1809 之前的 Windows 版本受影响)

微软在 33 年后解决了这个问题!哎呀,解决问题需要很长时间,不是吗?


0
投票

“微软在 33 年后解决了这个问题!哎呀,解决这个问题花了很长时间不是吗?”

微软没有修复任何问题。 Unix 使用自己的逻辑(基于文本终端通信逻辑),Apple 使用自己的逻辑(基于假设它们会有所不同),而 Microsoft 产品(这意味着 MS-DOS 和 MS Windows 环境)使用该逻辑这是来自使用点阵打印机,它是 IBM PC 的第一个输出设备。

要在每台与 EPSON ESC/P 标准兼容的打印机上实现下一行打印,您必须发送 0x0D 0x0A 字符序列,Microsoft World 的逻辑允许您只需发出命令即可在标准打印机上打印标准文本文件:复制文件名.txt PRN [Enter]

© www.soinside.com 2019 - 2024. All rights reserved.