如果我有一个应用程序坐在一个* nix盒子上,并生成一个csv,然后传递给瘦客户端用户,如果他们在Windows上,并且想要一个正确的csv,我必须采取哪些预防措施?
我的意思是这个stream程:
UNIX:
1)使用System.getProperty("line.separator")
生成csv
2)传递给瘦客户端
在Windows / Unix的:
1)从浏览器下载文件
2a)在Excel中打开(Windows)
2b)在某些电子表格应用程序中打开
我不是在寻找使用Library X
答案,对于仅仅用于一个项目的图书馆来说,缺乏添加技术风险的喜好。
根据rfc4180第2节
目前还没有正式的规范,允许对CSV文件进行各种解释。 本节介绍大多数实现似乎遵循的格式:
每条记录都位于一个单独的行上,由换行符(CRLF)分隔。 例如:
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF
文件中的最后一条记录可能有或没有结尾换行符。 例如:
aaa,bbb,ccc CRLF zzz,yyy,xxx
可能有一个可选的标题行出现在与普通记录行格式相同的文件的第一行。 这个头文件将包含与文件中的字段对应的名称,并且应该包含与文件其余部分中的记录相同数量的字段(标题行的存在或不存在应该通过这个可选的“标题”参数来指示MIME类型)。 例如:
field_name,field_name,field_name CRLF aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF
因此, System.getProperty("line.separator")
不正确,应该使用\r\n
。