【发布时间】:2022-07-10 22:37:59
【问题描述】:
tldr:我已降级到 JDK 17 (17.0.2),现在它可以工作了...
我在 YT (youtube.com/watch?v=t9LP9Nt9Nco) 上观看了 Kody Simpson 的 Java 初学者教程,在该教程中,男孩 Kody 打印了称为 Unicode 的疯狂符号,例如“☯Ωøᚙ”,但对我来说只是印刷 ”?” - 问号。
char letter = '\u1699';
System.out.println(letter);
我在 Stack Overflow 上尝试了几乎所有解决方案,例如:
- 将文件编码更改为 UTF-8,尽管我的默认使用的是 UTF-8。
- 将“-Dconsole.encoding=UTF-8”和“-Dfile.encoding=UTF-8”放入“编辑自定义虚拟机”选项中。
- 控制面板中的区域设置混乱。
都没有用。
每个帖子也是很多年前的,比如这个是12年的:
unicode characters appear as question marks in IntelliJ IDEA console
我最终删除并重新下载了 Intellij,因为我认为我搞砸了一些设置并想要重新启动,但这次我将 Project SDK 设为旧版本,Oracle openJDK 版本 14.0.1,现在不知何故它工作了打印了“ᚙ”符号。
然后我意识到问题可能出在 JDK 的最新版本 18 上,所以我下载了 JDK 17.0.2,它仍然可以正常工作并打印出符号“ᚙ”,这很好:)。但是当我切换回 JDK 版本 18 时,它只会打印“?”再次。
这也很奇怪,因为我可以将 ᚙ 符号复制粘贴到编写代码区域中,无论你怎么称呼它,(在 JDK 版本 18 上)
char letter = 'ᚙ';
System.out.println(letter);
但是当我按下运行并尝试打印时……它仍然给出问号。
我不知道为什么会发生这种情况,我开始学习编码 2 天所以我可能很笨,或者新版本有错误,但我从来没有通过谷歌或这里找到解决方案,所以这就是我的原因我正在发布我的第一个 Stack Overflow 帖子。
【问题讨论】:
-
您使用的是哪个平台和哪个终端
-
@BasilBourque 如何导航到 File > Settings...> Editor > General > Console 并查看 Default Encoding 的值?但是,即使这可以为您提供所需的内容,而且我不确定是否可以,如果您可以从状态栏中获取/设置控制台的编码会更方便。
-
@GiacomoCatenazzi 如果控制台字体根本不包含字符'ᚙ',它不会被呈现为替换字符('�')而不是问号('?'), OP看到的是什么?这似乎更有可能是控制台设置问题(编码?)而不是控制台字体问题,因此
println(letter)试图呈现无效/无意义的内容。然而,这些都不能真正解释为什么 OP 可以简单地通过使用 JDK 17 而不是 JDK 18 来解决问题。 -
对于那些投票结束这个问题的人,因为它是“不可复制或由拼写错误引起的”,你错了。它绝对是可重现的,绝对不是由拼写错误引起的。
-
[1] 请不要将您的解决方案嵌入您的问题中。相反,为您自己的问题创建一个答案。这对 SO 社区更有帮助。 [2] 虽然您回归到 JDK 17 的方法确实可以解决问题,但这并不是问题的解决方案;这只是一种避免解决它的解决方法。只需对 JDK 18 上的代码进行简单更改即可实现适当的修复。
标签: java intellij-idea unicode java-18