gpt4 book ai didi

java - 以法语导出 CSV 显示垃圾字符

转载 作者:行者123 更新时间:2023-12-01 13:15:54 25 4
gpt4 key购买 nike

我在使用 au.com.bytecode.opencsv.CSVWriter 导出 csv 文件时遇到问题。我做了类似的事情:

文件 file = File.createTempFile("UserDetails_", ".csv");
CSVWriter 编写器 = 新 CSVWriter(新 OutputStreamWriter(
新的 FileOutputStream(文件), "UTF-8"),
',');

然后当我导出.csv文件时,它显示了法语字母的垃圾字符。[要保存在.csv中的数据是法语字符]。但之前我做了类似的事情:

CSVWriter writer = new CSVWriter(new FileWriter(file));,则在Windows环境下完美显示所有法语字符,但在Prod环境[Linux]下显示垃圾。所以我想到使用字符集UTF-8作为要导出的文件格式。

如何解决这个问题?请大家推荐!!预先感谢!

最佳答案

假设:您使用 Excel 在 Windows 下打开 CSV。

不幸的是,Excel 无法读取 UTF-8。尽管不应该是必需的,但 Excel 预计会有 byte order mark如果它使用任何 UTF-* 编码,则在 CSV 的开头,否则它将尝试使用 Windows 1252 读取它!

解决方案?呃...不使用 Excel?

无论如何,用你的老方法:

CSVWriter writer = new CSVWriter(new FileWriter(file));

这将使用 JVM 的默认编码; Windows 下是 windows-1252,Linux 下是 UTF-8。

请注意,Apache 的 commons-io 有 BOM{Input,Output}Stream 类,这可能会对您有所帮助。

另一个解决方案是(ewwww)始终使用 Windows-1252 进行读/写。

其他注意事项:如果您使用 Java 7,请使用 Files.newBuffered{Reader,Writer}() 方法以及 try-with-resources 语句。

关于java - 以法语导出 CSV 显示垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22475431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com