具有0D 0D 0A换行符的文本文件

时间:2011-08-09 15:14:28

标签: character-encoding file-format

客户正在向我发送一个.csv文件,其中换行符由序列0xD 0xD 0xA组成。据我所知,换行符是来自Mac或Unix的0xA或来自Windows的0xD 0xA

0xD 0xD 0xA是否有任何已知编码?是否有任何已知的节约顺序会破坏导致此问题的文件行结尾(我认为客户使用的是Mac)?

文件不以任何编码标记开头,而是直接从文本内容开始。如果使用代码页1252打开,则文本会正确显示。

6 个答案:

答案 0 :(得分:29)

CRCRLF被称为Windows XP notepad word wrap bug的结果。

供将来参考,以下是链接博客的相关摘录:

  

在Windows计算机上按Enter键时,实际存储了两个字符:回车符(CR)和换行符(LF)。操作系统始终以与Enter键相同的方式解释字符序列CR LF:它移动到下一行。但是,当自己有额外的CR或LF字符时,这有时会导致问题。

     

Windows XP版本的记事本中存在一个错误,可能会导致额外的CR字符存储在显示窗口中。该错误发生在以下情况:

     

如果您打开了自动换行选项并且显示窗口包含环绕的长行,则保存文件会导致记事本在显示窗口的每个换行点插入字符CR CR LF,但不会在保存中插入文件。

     

如果将CR CR LF字符复制并粘贴到其他程序中,则可能会导致奇怪。如果您调整记事本窗口的大小,它们还会阻止记事本正确地重新包装行。

     

您可以通过关闭自动换行功能删除CR CR LF字符,然后根据需要将其重新打开。但是,执行此操作时,光标会在显示窗口的开头重新定位。

答案 1 :(得分:5)

Netscape ANSI编码文件使用0D 0D 0A作为换行符。

答案 2 :(得分:1)

这通常源于修订控制系统中的错误或类似错误。这是来自CVS的产品,如果从Windows到Unix服务器签入文件,然后再次签出...

换句话说,它刚刚被打破......

答案 3 :(得分:1)

众所周知,Apple邮件会对文本和csv附件出站产生编码错误。实质上,它用每行上的软换行替换行终止符,在编码中看起来像= 0D。如果附件通过电子邮件发送到Outlook,Outlook会看到软换行符,删除=然后附加实际换行符,即0D0A,这样您就会在每行末尾得到0D0D0A(cr cr lf)。编码应为= 0D =如果它是mac格式文件(或任何其他unix风格)或= 0D0A =如果它是Windows格式文件。

如果您通过电子邮件发送苹果邮件(至少是小牛或优胜美地),使附件不是文本或csv文件是可接受的解决方法,例如压缩它。

如果您在并行运行Windows VM并使用Apple邮件从那里通过电子邮件发送txt文件,则该错误也存在。这是电子邮件编码。在此处形成之前的评论,看起来netscape有同样的问题。

答案 4 :(得分:0)

只是说,这也是从php返回的值(种类......):

<?php var_dump(urlencode(PHP_EOL)); ?> 
    // Prints: string '%0D%0A' (length=6)-- used in 5.4.24 at least

答案 5 :(得分:0)

我在 Solidworks 3D CAD 程序生成的文本文件中看到过这种情况。例如,如果您将模型的方程导出到文本文件(默认名称为 equations.txt),则行尾使用 0x0D 0x0D 0x0A

我确定这是一个错误,但事实就是如此。

这些文件(至少是 2019 版软件生成的文件)包括 <0xEF, 0xBB, 0xBF> UTF-8 表示的字节顺序标记作为文件开头的前导编码标记。