最近用试用 quarkus 框架,用 log4j2 打印日志的时候,发现中文乱码,尝试过下面的修改:

  1. IDEA -> Setting -> Editor -> General -> Console -> Default Encoding
  2. IDEA -> Setting -> Editor -> File Encoding -> (Global Encoding | Project Encoding | Default encoding for properties files)
  3. 启动参数加: -Dfile.encoding=utf-8
  4. IDEA -> Help > Edit Custom VM Options -> 添加 -Dfile.encoding=utf-8

修改这些后都没有用,最后搜索发现和 chcp 有关

chcp 是 Windows 命令行命令,用于更改命令提示符的字符编码页(Code Page)

这个值在我的机器上默认的是 936(GBK编码),将其指定为 65501 (UTF-8),chcp 65501,就可以临时解决乱码问题。要永久解决就需要修改注册表 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,添加一个 DWORD 类型的值,十进制 65001,也可以将下面的代码保存成 codepage.reg 执行:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9

code page dword

记录一个打包可执行jar在log4j2控制台输出中文乱码的问题 - Nihaorz - 博客园 (cnblogs.com)