我正在使用Log4j 2编写一个包含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
但我希望log4j 2能为我做到这一点。有没有更好的解决方案/变通方法?
下面是我的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,answer\n"
charset="UTF-8" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
</Policies>
</RollingFile>
感谢您的帮助和建议!
1条答案
按热度按时间ni65a41a1#
如果要在文件的开头有一个BOM表,只需将其插入到
header
参数的开头: