如果我在一个*nix盒子上有一个应用程序,我生成一个csv,然后传递给瘦客户端用户,如果他们在Windows上想要一个正确的csv,我必须采取什么预防措施?
我的意思是这个流程:
UNIX:
1)使用System.getProperty("line.separator")
生成csv2)传递给瘦客户端
Windows/Unix:
1)从浏览器下载文件
2a)在Excel中打开(Windows)
2b)打开一些电子表格应用程序
我不是在寻找说使用Library X
的答案,对于只用于一个项目的库来说,增加技术风险是缺乏爱好的。
根据[rfc4180 section 2][1]
不存在正式的规范,它允许各种CSV文件的解释。本节文档的格式似乎大多数遵循实现:
每条记录位于单独的行上,用一行分隔打破(CRLF)。例如:
aaa, bbb, ccc CRLF打鼾声,yyy, xxx CRLF
文件中的最后一条记录可能有也可能没有结束行休息。例如:
aaa, bbb, ccc CRLF打鼾声,yyy, xxx
可能有一个可选的标题行作为第一行出现与普通记录行格式相同的文件的。这头文件将包含与文件中的字段相对应的名称并且应该包含与中的记录相同数量的字段文件的其余部分(头行是否存在)应通过可选的"头"参数MIME类型)。例如:
field_name、field_name field_name CRLFaaa, bbb, ccc CRLF打鼾声,yyy, xxx CRLF
因此System.getProperty("line.separator")
是不正确的,应该用rn
代替。[1]: https://www.rfc-editor.org/rfc/rfc4180第二节