
按默认配置安装了最新的 idea 社区版,创建了新项目,并创建了 hello world 文件( src/Main.java )只有这一个文件。按 Ctrl+Shift+F10 单文件编译执行正常输出 hello world ,但如果替换为中文则会显示乱码。
目前做了的工作:在 Settings 里把 File Encodings 相关全部调成了 utf-8,以及把 idea 目录下的 idea64.exe.vmoptions ,修改为结尾添加了
-Dfile:ecOnding=UTF-8 -Dconsole.encoding=UTF-8 经过以上两点修改后乱码问题仍无改善,请问应该怎么设置呢?网上资料大部分是旧版 idea 的,新版里不太适用
1 SMGdcAt4kPPQ Jun 19, 2022 via Android 运行选项勾上 external console 同时 Windows 默认终端设置为 Windows Terminal |
2 CEBBCAT Jun 19, 2022 via iPhone 其实编码问题无非就是输入输出。 代码用什么编码输出的,用对应的编码解码,自然可以得到正确的结果。 建议楼主用 iconv 、od 、echo 、base64 等工具对 stdin/stdout 进行调试。 上面提的那些工具如果不会用的话,建议检查 .java 文件编码、IntelliJ IDEA 终端编码 |
3 Bingchunmoli Jun 20, 2022 设置-》 编辑器》里面有文件编码,最好设置 UTF-8 windows 默认 GBK 和 ISO-8859-1 终端默认 GBK |
4 Bingchunmoli Jun 20, 2022 通常 windows 默认 GBK 如果修改 UTF-8 需要修改注册表。一般是不懂终端,但是正常不乱吗。 |
5 SMGdcAt4kPPQ Jun 20, 2022 via Android @Bingchunmoli Windows 修改全局 UTF-8 会导致部分软件乱码,不建议也没必要这样做 |
6 Richard14 OP @ComputerIdiot 运行选项具体指什么,我在 Run/Debug Configuration 里没有找到 external console 的选项。windows 默认终端是指修改 windows 设置,还是指修改 idea 的关联设置。如果是前者难道我需要额外安装一个 terminal 才能用,我记得这个软件不是 win 默认预装的 |
7 SMGdcAt4kPPQ Jun 20, 2022 via Android @Richard14 我一直用的 Rider 没发现 IDEA 是没有 external console 这个选项的 Windows 默认终端是 Win11 的新设置,可以用 Windows Terminal 代替原来的 conhost ,conhost 可以输出中文但不能输出 emoji ,换成 Windows Terminal 就可以了 |
8 SMGdcAt4kPPQ Jun 20, 2022 via Android 首先得测试一下不用 IDEA 的控制台运行是否乱码,如果不乱码就是 IDEA 的问题 |
9 SMGdcAt4kPPQ Jun 20, 2022 via Android 在 C#里我只需要加上 Console.OutputEncoding = Encoding.UTF8; Console.InputEncoding = Encoding.UTF8; 就可以正常从 Windows Terminal 输入输出 Emoji ,Java 怎么做都只能输出中文不能输出 Emoji ,可能是 Java 内部没有使用 WriteConsoleW 这个 API |
10 geying Jun 20, 2022 查看下文件编码,上次项目也遇到过 (有个地方设置选择 utf-8 或 other) 虽然编辑器中午是正常 但是命令行是乱码 |
11 linweizhi Jun 20, 2022 试一下添加一个环境变量? JAVA_TOOL_OPTIOnS= -Duser.language=en |
12 arch9999 Jun 20, 2022 |
13 Richard14 OP |
14 arch9999 Jun 20, 2022 @Richard14 #13 ``` > $OutputEncoding Preamble : BodyName : utf-8 EncodingName : Unicode (UTF-8) HeaderName : utf-8 WebName : utf-8 WindowsCodePage : 1200 IsBrowserDisplay : True IsBrowserSave : True IsMailNewsDisplay : True IsMailNewsSave : True IsSingleByte : False EncoderFallback : System.Text.EncoderReplacementFallback DecoderFallback : System.Text.DecoderReplacementFallback IsReadOnly : True CodePage : 65001 ``` |
15 Richard14 OP @arch9999 PS C:\WINDOWS\system32> $OutputEncoding IsSingleByte : True BodyName : us-ascii EncodingName : US-ASCII HeaderName : us-ascii WebName : us-ascii WindowsCodePage : 1252 IsBrowserDisplay : False IsBrowserSave : False IsMailNewsDisplay : True IsMailNewsSave : True EncoderFallback : System.Text.EncoderReplacementFallback DecoderFallback : System.Text.DecoderReplacementFallback IsReadOnly : True CodePage : 20127 |
16 arch9999 Jun 20, 2022 |
17 SMGdcAt4kPPQ Jun 20, 2022 via Android PowerShell 一直都能正常输入输出 Unicode 字符 需要测试的是运行 java YourClass 能否正常输出 |
18 nnegier Jun 20, 2022 我用 Clion 一样的问题,貌似处理方法还和 Intellj IDEA 不一样,还没解决,按理说编码问题就是输入和输出的字符编码集不一样导致的 |
19 SMGdcAt4kPPQ Jun 20, 2022 via Android @nnegier MS 的 C Runtime 调用的不是 Unicode 版本的 Windows API ,需要自己调用 WriteConsoleW |
20 kamal Jun 20, 2022 指定字体试试 |
21 mmdsun Jun 20, 2022 没用过社区版,最新旗舰版 idea 没有这个问题,莫非系统改过什么设置? |
22 ThisDay Jun 20, 2022 idea64.exe.vmoptions 管用的,你是不是改错文件了,你不要自己找,直接点“帮助” -》“编辑自定义 vm 选项” |
23 cubecube Jun 20, 2022 换个中文字体试试,之前出过问题发现是某些字体无法显示中文 |
24 Bingchunmoli Jun 20, 2022 @ComputerIdiot 是的,但是也是老软件,全局 UTF-8 其实有助于编码统一,但无助于 windows 的老旧生态 |
25 Richard14 OP |
26 ThisDay Jun 21, 2022 我说那个位置 100% 会在启动时加载的,在那改准没错。 然后把你的乱码复制一段贴出来 |
28 mxjump Jun 21, 2022 @Richard14 楼主我 3 、4 个月前用 tomcat 也是控制台乱码,跟着这个帖子弄好的,你看看有没有用 百度搜“解决 IntelliJ IDEA 中 tomcat 控制台中文乱码问题”,csdn 的帖子,作者 Dragon~Snow 。。。。刚注册,发不了链接,,希望里面的办法能帮到楼主 |
30 ThisDay Jun 21, 2022 @Richard14 你这方向找错了,你这种都是问号的乱码是以 utf8 的方式读取 gbk 编码的中文。所以你这个乱码不是 idea 的问题也不是 idea console 的问题,而是你的 java 程序输出了乱码。你点一下右上角调试运行那里那个“main”,然后编辑 然后添加运行时的 vm 参数-Dfile.encoding=UTF-8 |
31 ThisDay Jun 21, 2022 刚发现你的 File Encodings 一直写错了,注意是 file.encoding ,你一直写成了 file:encoding! |
32 litchinn Jun 21, 2022 看到你的控制台用的是 jdk18 ,这个应该是 jdk18 的问题,https://bugs.eclipse.org/bugs/show_bug.cgi?id=579383 在 jdk18 的这个问题(具体原因不明)有结果之前,换成 GBK 或者更换成其他版本 jdk 可以解决 |
33 SMGdcAt4kPPQ Jun 21, 2022 @litchinn 之前用 JDK18 EA 的时候就遇到了这个问题,没想到 GA 了还没修 不能输出 Emoji 的问题有人反馈过吗? |
34 SMGdcAt4kPPQ Jun 21, 2022 @nnegier 刚刚试了一下 Rust ,在 Windows Terminal 里运行能正确输出 Emoji ,在 CLion 和 conhost 能正确输出部分 Emoji ,中文当然都没问题 |
35 gumayusi Jun 21, 2022 我猜测一下,既然 OP 安装 IDEA 都要最新版,那想必 JDK 版本也是最新的。百度"IDEA Java18 中文",找到了一篇 CSDN 的博文,标题是"解决 jdk18 下 IntelliJ IDEA2021.3 中文乱码问题"。点进去看了一下,发现 IDEA 和 Java18 有兼容性问题。我用虚拟机里的全新 Windows11 测试了一下,安装全新的 IDEA+JDK17+JDK18 ,如果新建项目时使用 JDK17 ,中文就能正常显示,如果使用 JDK18 ,中文就会乱码(而且就是 OP 截图中菱形问号式的乱码),问题解决(*^_^*)。另外,Java18 默认编码改为 UTF-8 了,可能 IDEA 之前的代码兼容不了所以中文显示乱码,以后的版本应该会修复吧。 |
36 SMGdcAt4kPPQ Jun 22, 2022 via Android @ComputerIdiot 之前用 JDK18 的时候也是乱码,但是换 Kotlin ,同样也是 JDK18 ,就不乱码 |
38 goalidea Jul 13, 2022 这是提醒你需要付费上 ultimate 版 |
39 spe Sep 3, 2022 搞了 2 小时,无数个方法,终于找到了,还真是 jdk18 的问题 |