从SDK 16.0.2切换至OpenJDK 20.0.1后特殊字符及emoji无法显示
解决JDK 20下特殊字符与Emoji显示问号的问题
1. 检查终端控制台编码
确保你使用的终端(Windows CMD/PowerShell、Linux/macOS终端)当前采用UTF-8编码:
- Windows CMD:执行
chcp 65001切换至UTF-8编码; - Windows PowerShell:执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; - Linux/macOS终端:检查环境变量
LANG是否为zh_CN.UTF-8(或对应语言的UTF-8格式),若不是则执行export LANG=zh_CN.UTF-8。
2. 强制指定JVM输出编码
运行Java程序时,添加JVM参数强制输出编码为UTF-8:
java -Dfile.encoding=UTF-8 Main
如果是在IDE(如IntelliJ IDEA)中运行,需在Run Configuration的VM选项中添加:-Dfile.encoding=UTF-8
3. 验证编码配置是否生效
在代码中加入以下内容,查看当前编码设置:
public class Main { public static void main(String[] args) { System.out.println("默认字符编码: " + System.getProperty("file.encoding")); System.out.println("控制台输出编码: " + System.out.charset()); System.out.println("hello ěš 👍👍🤡"); } }
若输出编码不是UTF-8,说明配置未生效,需重新检查设置。
4. 检查IDE控制台编码设置
即使项目文件编码为UTF-8,IDE控制台编码可能单独配置:
- IntelliJ IDEA:打开
File > Settings > Editor > General > Console,确认Console Encoding设为UTF-8; - Eclipse:打开
Window > Preferences > General > Workspace,确保Text file encoding为UTF-8,同时进入Run/Debug > Console,设置Console encoding为UTF-8。
内容的提问来源于stack exchange,提问作者jan kady
相关产品推荐
相关产品推荐

