【发布时间】:2019-11-21 12:54:56
【问题描述】:
我正在使用 Web 应用程序,我需要生成 CSV 文件。 CSV 文件包含像 140 € 这样的欧元价格,但是当我打开 CSV 文件时,Excel 无法正确显示欧元符号 140 €。
我从 Oracle 数据库中读取数据,将 CSV 文件内容存储在 List<String> 中,并将结果写入 HttpServletResponse response 中类似
List<String> data = getCsvContent();
response.getOutPutStream().write(data.toString().getBytes("UTF-8"));
我在 Windows 7、MS Office 2010 中工作,我想知道是否有任何方法可以告诉 Excel 以 UTF-8 编码打开此文件?我尝试添加BOM,但没有效果。
请帮我解决这个问题,在此先感谢
编辑:
我正在使用 AJAX 调用来下载文件,在下载文件之前,我将 BOM 添加到结果中。当我通过双击 Excel 打开文件时,在开发环境(本地)中正确打开 CSV 但是当我在远程服务器中部署应用程序时,csv 文件中的欧元符号未正确写入,这意味着 Excel 无法显示符号正确。
谁能说出问题所在?
【问题讨论】:
-
您必须使用其他版本的 Excel 进行检查(如果您使用 Excel 打开 CSV)。该问题出现在某些版本的 Excel for CSV 中。另外,您可以设置编码
-
我可以使用“没有 BOM 的常规 UTF8 编码 CSV 文件”重现您的问题。但是,如果我将 BOM 添加到文件的开头,它会正确呈现欧元符号。也许您没有正确添加 BOM?您是否使用十六进制编辑器检查了生成的 CSV 文件以确保在开头正确添加 BOM?
-
也许How to add a UTF-8 BOM in java 会有所帮助。
标签: java jquery excel spring csv