Log4j2写入CSV for Excel,无乱码



我正在使用Log4j2编写一个具有UTF-8字符集的output.csv文件。

输出完成后,一切正常。但是当我用Excel-2016打开output.csv时,每个汉字都变成了乱码。

我注意到Excel默认使用ANSI编码打开csv,因此许多UTF-8字符无法正确显示。其中一个解决方案是在我的output.csv开始时自己添加byte order mark (BOM)

看到:java-how-to-add-and-remove-bom-from-utf-8-file

但我希望log4j2可以为我做。有没有更好的解决办法?

这是我的log4j2.xml

<RollingFile 
name="Chat-Appender" 
fileName="${logSavePath}/output.csv"
filePattern="${logArchivePath}/output_%d{yyyy-MM-dd}.csv">
<CsvParameterLayout 
delimiter="," 
format="Excel"
header="id,question,answern"
charset="UTF-8" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
</Policies>
</RollingFile>

谢谢你的帮助和建议!

如果您想在文件的开头有一个BOM,您只需要在header参数的开头插入它:

<CsvParameterLayout delimiter="," 
format="Excel"
header="&#xFEFF;id,question,answern"
charset="UTF-8" />

相关内容

  • 没有找到相关文章

最新更新