我正在使用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="id,question,answern"
charset="UTF-8" />