php windowcrlf和unix,文件格式unix与dos转换,CRLF与LF的区别查看

这两天被一个客户的网站系统搞得很头痛的,开发的好好地不知道哪里错了,新建的文件都是不能正确执行的。

怎么检查代码都是不正确的,噢,文件是PHP的文件,经过调试,最终定位在凡是require_once进来的文件都是不会被初始化的。

奇怪的是,原先的程序代码是可以的,但是一旦修改了,就会出现空白的情况。

一直翻查程序文件都没问题。

终于在调试的过程不断的变换编码中发现一个问题:就是程序里面的代码会莫名其妙的成了“乱码”直接显示出来了。

好吧,引入今天的话题吧。

文件的格式虽然都叫做纯文本,但是他们的存储格式还是有不同的,比如这个文件格式就分unxi、dos、mac。

文件格式之外,存储的内容还有编码的区别,比如utf-8、ansi等的区别。

同一个编码还存在有BOM没有BOM的区别。

当然,还有CRLF与LF的区别,天呐,真的会疯了的。

我不就想要好好编个程嘛~

下面就是使用notepad++来查看这些内容的。

第一、文档格式

编辑、文档格式转换

转换为Windows格式

转换为UNIX格式

转换为MAC格式

当前的文档格式会成灰色。

VI操作:

set fileformat=[unix|dos]

这个决定下面换行符的行为模式。

第二、CRLF与LF的查看

视图、显示符号、显示全部字符

然后你会发现,全部的字符后面都增加了CRLF或者LF了,具体是根据你的文档格式来定的。

这个决定行与行之间是什么关系,比如本来应该单行注释一行,紧跟一行正确代码,然后这个不正确的话就变成了同一行了,然后文件就错了。而使用这些智能的编辑器,他显示是自动转换的,结果你是死活不知道原来他的处理已经并成一行了。

第三、存储的编码

编码、选择合适的编码

这个决定文件的字符是正常文字还是“乱码”。

这样子之后就正常了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windows和Unix是两种不同的操作系统,它们在文本文件中使用的换行符也不同。Windows使用回车符和换行符(CRLF)作为换行符,而Unix使用换行符(LF)作为换行符。 在转换Windows和Unix文本文件时,需要将CRLF转换LF或将LF转换CRLF。可以使用文本编辑器或命令行工具来进行转换。 在文本编辑器中,可以使用“查找和替换”功能来进行转换。将“\r\n”替换为“\n”即可将CRLF转换LF,将“\n”替换为“\r\n”即可将LF转换CRLF。 在命令行中,可以使用“dos2unix”和“unix2dos”命令来进行转换。使用“dos2unix”命令将CRLF转换LF,使用“unix2dos”命令将LF转换CRLF。例如,将Windows文本文件转换Unix文本文件,可以使用以下命令: dos2unix file.txt 将Unix文本文件转换为Windows文本文件,可以使用以下命令: unix2dos file.txt ### 回答2: 在计算机操作系统中,Windows和Unix是两种广泛使用的操作系统。在这两种操作系统中,文本文件的换行格式不同:Windows使用CRLF(回车符+换行符)作为换行符,而Unix使用LF(换行符)作为换行符。 因为操作系统的差异,两种换行符的使用会产生兼容性问题。当在Windows系统下编辑文本文件,保存时默认会使用CRLF换行符,但在Unix系统下打开该文件时会将CRLF视为两个字符,即CR和LF,从而影响文本的排版和格式。 为了解决这个问题,需要将文本文件的换行符从Windows格式转换Unix格式,或者将Unix格式转换为Windows格式。常用的工具有以下几种: 1. DOS2UNIXUNIX2DOS:这是两个Unix下的命令行工具,用于将文本文件从Windows格式转换Unix格式或将Unix格式转换为Windows格式。使用方法如下: - 将Windows格式的文件转换Unix格式:dos2unix filename.txt - 将Unix格式的文件转换为Windows 格式:unix2dos filename.txt 2. Notepad++:这是一款文本编辑器,支持Windows和Unix格式的文本文件,可以通过菜单 “Edit”-> “EOL Conversion” 来将换行格式转换为Windows或Unix格式。 3. Sublime Text:也是一款文本编辑器,支持Windows和Unix格式的文本文件,可以在菜单 "View"-> "Line Endings" 中设置将换行符转换为Windows或Unix格式。 需要注意的是,如果文件较多,可以使用批量转换命令将每个文件的换行符都转换为需要的格式。另外,在Git等版本控制工具中,也可以设置换行符的处理方式,以避免由此产生的兼容性问题。 ### 回答3: 在Windows和Unix系统中,行结束符的表示方式不同,Windows使用的是CRLF(回车符+换行符),而Unix使用的是LF(换行符)。 当我们在Windows系统中编写文件时,每一行的结尾都会自动添加CRLF,但是在Unix系统中,如果我们将这个文件复制到Unix系统中,就会出现问题,因为Unix系统只能识别LF作为行结束符。 为了解决这个问题,我们可以通过转换文件的行结束符来实现不同系统间的文件共享。下面列举几种常见的方式: 1. 使用文本编辑器转换。许多文本编辑器都提供了转换行结束符的选项,可以使用这个选项来将CRLF转换LF或反之亦然。比如在Atom编辑器中,可以通过在底部栏中选择CRLFLF转换。 2. 使用命令行工具转换。在Unix系统中,可以使用sed命令来将CRLF转换LF,命令格式为: sed 's/\r$//' file.txt > newfile.txt 其中,\r为回车符,$表示行末。将源文件file.txt中的每一行行末的\r替换为空字符,然后将结果输出到新文件newfile.txt中。 在Windows系统中,可以使用PowerShell的Get-Content和Set-Content命令来转换行结束符,命令格式为: (Get-Content file.txt) -replace "`r`n", "`n" | Set-Content newfile.txt 其中,`r和`n分别表示回车符和换行符。先读取源文件file.txt,再通过-replace替换每行行末的\r\n为\n,最后将结果输出到新文件newfile.txt中。 3. 使用软件批量转换。有些软件可以批量转换文件的行结束符,比如Notepad++和WinMerge等。在Notepad++中,可以使用Edit->EOL Conversion菜单来转换,而在WinMerge中,可以使用Edit->Convert Line Endings菜单来转换。 总之,通过将行结束符进行转换,可以实现不同操作系统间的文件共享和兼容,提高文件的可移植性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值