Log4j2写入CSV for Excel无乱码
Log4j2 write to CSV for Excel without garbled characters
我正在使用 Log4j2 编写带有 UTF-8 字符集的 output.csv
文件。
输出完成后,一切正常。但是当我打开Excel-2016的output.csv
时,每一个汉字都是乱码。
我注意到Excel默认打开csv时使用ANSI编码,所以很多UTF-8字符无法正确显示。
解决方案之一是自己在 output.csv
的开头添加 byte order mark (BOM)
。
参见:java-how-to-add-and-remove-bom-from-utf-8-file
但我希望 log4j2 可以为我做到这一点。还有更好的吗solution/workaround?
这是我的 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>
感谢您的帮助和建议!
如果要在文件开头有BOM,只需要在header
参数开头插入即可:
<CsvParameterLayout delimiter=","
format="Excel"
header="id,question,answer\n"
charset="UTF-8" />
我正在使用 Log4j2 编写带有 UTF-8 字符集的 output.csv
文件。
输出完成后,一切正常。但是当我打开Excel-2016的output.csv
时,每一个汉字都是乱码。
我注意到Excel默认打开csv时使用ANSI编码,所以很多UTF-8字符无法正确显示。
解决方案之一是自己在 output.csv
的开头添加 byte order mark (BOM)
。
参见:java-how-to-add-and-remove-bom-from-utf-8-file
但我希望 log4j2 可以为我做到这一点。还有更好的吗solution/workaround?
这是我的 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>
感谢您的帮助和建议!
如果要在文件开头有BOM,只需要在header
参数开头插入即可:
<CsvParameterLayout delimiter=","
format="Excel"
header="id,question,answer\n"
charset="UTF-8" />