也说CRLF/LFLF:从CVS、SVN中checkout的页面模板中莫名出现的双换行
以前协同作业时遇到过如题所示的问题:用Dreamweaver打开smarty模板,看到本来非常整齐的代码每行之间都隔了一个空行,即:
</body>
</html>
工作忙也没多想,只是很郁闷,编辑完了继续提交,然后那边就有人问我:“你提交后的代码怎么变成双换行啦?”
faint,我更是一头雾水,后来永林提到某些编辑器会把/r/n转换为/n/n,原因是windows不识别/n/n,这样用记事本打开时,看起来是好好的,但是一保存,全部打成一行(没有换行);Dreamweaver里一保存,就变成了/r/n,这样就轮到他们那边出现双换行了。
google之后,总结几点经验:
1、其实Dreamweaver是可以选择换行类型的:CRLF(Dos/windows)、LF(Unix/Linux)、CR(Mac)
2、某些Unix下的编辑器会把CRLF误认为LFLF,或者显示为^M(仍是LF),没经验的工程师很容易误会它们
3、即使用Windows记事本打开看起来全是一行,LF(/n)字符还是存在的可以放心
4、有个表:
Client Action Server
======================
LF -- Unix checkin --> LF
CRLF <-- Windows checkout -- LF
CRLF -- Unix checkin --> CRLF
CRCRLF <-- Windows checkout -- CRLF
作者建议要防止混乱切记不要用Unix的CVS客户端(包括Cygwin的CVS客户端)Checkin DOS格式的文件。
但是,我们究竟要选哪种格式呢?
还是用CRLF以保证兼容吧,毕竟很多系统和软件都能正确识别这些格式并转换;
或者说,我们用CRLF的话,可以保证Unix换行,也可以保证Mac换行,囧~;
万一出了双换行打乱了格式怎么办呢?
1、还是沟通,去和工程师协调。
2、我们这边可以这么处理:
用Dreamweaver的Ctrl+F,然后勾选“Use regular expressiong”(即使用正则表达式),先把“\n\n”替换为“\n”,然后把“\r\n”替换为“\n”,最后把“\n”替换回“\r\n”即可。
</body>
</html>
工作忙也没多想,只是很郁闷,编辑完了继续提交,然后那边就有人问我:“你提交后的代码怎么变成双换行啦?”
faint,我更是一头雾水,后来永林提到某些编辑器会把/r/n转换为/n/n,原因是windows不识别/n/n,这样用记事本打开时,看起来是好好的,但是一保存,全部打成一行(没有换行);Dreamweaver里一保存,就变成了/r/n,这样就轮到他们那边出现双换行了。
google之后,总结几点经验:
1、其实Dreamweaver是可以选择换行类型的:CRLF(Dos/windows)、LF(Unix/Linux)、CR(Mac)
2、某些Unix下的编辑器会把CRLF误认为LFLF,或者显示为^M(仍是LF),没经验的工程师很容易误会它们
3、即使用Windows记事本打开看起来全是一行,LF(/n)字符还是存在的可以放心
4、有个表:
Client Action Server
======================
LF -- Unix checkin --> LF
CRLF <-- Windows checkout -- LF
CRLF -- Unix checkin --> CRLF
CRCRLF <-- Windows checkout -- CRLF
作者建议要防止混乱切记不要用Unix的CVS客户端(包括Cygwin的CVS客户端)Checkin DOS格式的文件。
但是,我们究竟要选哪种格式呢?
还是用CRLF以保证兼容吧,毕竟很多系统和软件都能正确识别这些格式并转换;
或者说,我们用CRLF的话,可以保证Unix换行,也可以保证Mac换行,囧~;
万一出了双换行打乱了格式怎么办呢?
1、还是沟通,去和工程师协调。
2、我们这边可以这么处理:
用Dreamweaver的Ctrl+F,然后勾选“Use regular expressiong”(即使用正则表达式),先把“\n\n”替换为“\n”,然后把“\r\n”替换为“\n”,最后把“\n”替换回“\r\n”即可。




0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页