NLog 5.1.0升级后UTF-8编码失效,特殊字符日志乱码求助
NLog 5.1.0升级后特殊字符乱码问题解决办法
你遇到的Ö、ä显示为ö、ä这类乱码,是典型的UTF-8字符被ANSI编码解析导致的结果。虽然配置里指定了encoding="utf-8",但NLog 5.x的默认行为变化可能让这个设置未生效,试试以下几个调整:
改用带BOM的UTF-8编码
很多文本工具(比如NotePad++)会因UTF-8文件无BOM而误识别为ANSI。把配置里的encoding属性改成utf-8-with-bom,让NLog生成带BOM的UTF-8文件,工具就能正确识别编码:<target name="logfile" xsi:type="File" fileName="${basedir}/Logs/nLog.csv" archiveAboveSize="50000000" archiveNumbering="Sequence" maxArchiveFiles="3" encoding="utf-8-with-bom" keepFileOpen="true"> <layout xsi:type="CsvLayout"> <column name="time" layout="${longdate}" /> <column name="level" layout="${level}"/> <column name="category" layout="${event-context:item=category}" /> <column name="message" layout="${message}" /> </layout> </target>删除旧日志文件重新生成
如果之前的日志文件是用ANSI编码创建的,在keepFileOpen=true的情况下,NLog可能会继续沿用旧文件的编码规则。先删掉现有的nLog.csv及归档文件,让NLog重新创建符合新编码配置的日志文件。确认应用字符串编码正确性
排查应用程序中传递给NLog的日志消息本身是否为正确的Unicode字符串,避免消息在生成阶段(比如从数据库、外部文件读取时)就被错误转码。
内容的提问来源于stack exchange,提问作者Cleo
相关产品推荐
相关产品推荐

