Log4j2写入Excel CSV,无乱码字符

oug3syen  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(120)

我正在使用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>

感谢您的帮助和建议!

ni65a41a

ni65a41a1#

如果要在文件的开头有一个BOM表,只需将其插入到header参数的开头:

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

相关问题