背景:
我司使用的是svn代码管理工具,开发老师都没有直接提交权限,需要走公司的代码管理平台通过patch提交,提交过程中需要对应项目的评估人和验证人进行评审。
在这几年的操作中,总是遇到idea工具编码和文件编码一致,都是utf-8,但是在代码平台网页上看预览patch却显示乱码,但是点击对应patch的全文对比却显示正常。由于该问题实质上对代码没有影响,只是在评审代码时会带来不方便,但总归属于不痛不痒的问题,也没人管他。
最近这不又遇到了,我便又去idea工具确认了一下,发现文件编码和工具编码仍都是utf-8。这一次灵光一现,每次在notepad++工具中看到文本文件,不止有编码属性,还有Dos\Windows等属性,结合之前用到的dos2unix命令,猜想是不是因为这个属性不对,导致显示问题。
于是在本地执行了一次dos2unix命令,重新打的patch文件,预览就正常了,于是了解了一下dos和unix的知识。
dos2unix 是一个用于将文本文件从 DOS/Windows 格式转换为 Unix/Linux 格式的工具。它主要处理换行符的转换:
1、换行符转换:
DOS/Windows 使用 CRLF(\r\n)作为换行符。
Unix/Linux 使用 LF(\n)作为换行符。
dos2unix 将 CRLF 转换为 LF。
2、文件格式标准化:
确保文件在 Unix/Linux 系统中能被正确处理。
避免脚本或配置文件因换行符问题无法执行或解析。
3、其他功能:
支持批量转换。
提供选项以保留文件时间戳或仅转换特定行。
示例
dos2unix file.txt
将 file.txt 从 DOS 格式转换为 Unix 格式。
反向工具unix2dos 用于将 Unix 格式转换为 DOS 格式。
至此,我们下次再遇到类似的乱码问题,就知道如何规避了。那么再深入思考一点,这是svn的bug吗?
仔细想一下,其实这应该是我们代码平台的bug,兼容性bug。因为在同样的情况下,全文对比时不会出现该显示问题,提交到仓库后也不会出现该乱码问题,只有在预览的时候会出现。
所以问题应该是我们代码平台的预览功能在修改的文件为dos格式,仓库文件为unix格式时的兼容性问题。