Linux下載代碼庫CSV文件換行符直接由\r\n會變成\n

問題背景:在windows下更新git,下載代碼庫的CSV文件能正常通過界面導入,但是在Linux環境下導出CSV模板文件修改再導入報文件爲空,無法導入。
定位分析:原以爲在構建版本時可能導致文件格式變化,如JS混淆等,但經過各種屏蔽,竟然發現是git checkout .導致文件換行符變化。順着這個思路考慮,覺得只有可能跟操作系統相關。分析代碼,發現解析文件是通過\r\n去截取行,但是Linux下CSV文件換行符就會自動變成了\n。在windows環境下通過記事本打開Linux環境上下載的模板,所有文字會變成一行。
而Windows裏的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
經過查找資料發現
Windows:

'\r' 回車,回到當前行的行首,而不會換到下一行,如果接着輸出的話,本行以前的內容會被逐一覆蓋;

'\n' 換行,換到當前位置的下一行,而不會回到行首;

所以,Windows系統裏面,每行結尾是“<回車><換行>”,即“\r\n”

Unix:

每行結尾只有“<換行>”,即"\n";

Mac OS:

每行結尾是“<回車>”,即"\r";

解決方法:

先通過\r\n解析行,若解析不了,再通過\n解析即可。

參考資料:

https://blog.csdn.net/seabiscuityj/article/details/84644474?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章