在启用Beta: Use Unicode UTF-8 for worldwide language support选项时,Java无法识别Unicode字符。
我的用户文件夹的路径是C:\Users\Otávio Augusto Silva,á字符给java带来了一些麻烦。通过调用javac命令(如果JDK是使用scoop install安装在我的用户文件夹中),它将给出以下结果:
Erro: Não é possível carregar a classe principal com.sun.tools.javac.Main no módulo jdk.compiler
java.lang.UnsatisfiedLinkError: no jimage in system library path: C:\Users\Otávio Augusto Silva\scoop\apps\zulu-jdk\current\bin注意,它将á字符替换为á。
如果通过使用scoop install -g、choco install或任何JDK发行版中的默认安装程序全局安装,这些命令可以正常工作,但是如果我调用并传递整个路径,则会产生一个错误:
C:\Users\Otávio Augusto Silva>javac "C:\Users\Otávio Augusto Silva\Documents\Code\Java\Hello World\main.java"
error: file not found: C:\Users\Otávio Augusto Silva\Documents\Code\Java\Hello World\main.java
Usage: javac <options> <source files>
use --help for a list of possible options若要复制,请执行以下操作:
á、é、ã等)Beta: Use Unicode UTF-8 for worldwide language support设置javac,像C:\Users\USERFOLER\PATH\TO\FILE\file.java一样传递整个路径应该会出现错误。
我被困在这里面好几天了,如果有人能帮我的话,我会非常感激的。
一些相关信息:
cmd,但是PowerShell给出了同样的错误chcp命令给出代码65001发布于 2022-09-16 20:20:33
使用您的目录名(Otávio Augusto Silva),我也可以使用Java 18在Windows 10上再现您的问题。不幸的是,这看起来像是这个开放和未解决的JDK错误中记录的一个更普遍和更长期存在的问题的具体例子:
JDK-4488646 Java可执行文件和系统属性需要在Windows上支持Unicode
这是bug报告的一部分,我的重点是:
要使Java完全识别NT上的Unicode,我们需要
那个错误报告是在2001年创建的!它与Windows有关,但是由于它仍然是开放的和未解决的,所以我认为它对所有类型的Windows都具有普遍适用性,包括Windows 10和11。
备注:
Otávio Augusto Silva。有关代码,请参见这就是答案。java上使用cmd窗口和PowerShell窗口的区别。========================================================
(此更新基于@ based 16320675的注释。)
这个问题似乎在Java19 (从这里下载)中完全解决了,它将于本月晚些时候发布。屏幕截图如下:
D:\Otávio...被处理为D:\Otávio...。
我找不到关于这个修复在JDK 19发行说明中的任何提及。
========================================================
(此更新显示如果未启用beta选项会发生什么情况。)
如果选项Beta: Use Unicode UTF-8 for worldwide language support未启用,则无法重现问题;对javac的调用使用JDK 18和JDK 19都能正常工作:

请注意,即使cmd窗口中的代码页为437,而不是65001,这仍然有效。当然,在你的环境和我的环境之间有几个显著的区别:
总结一下如何解决这个问题:
========================================================
更新:在Java 19中修复了以下错误:
8272352:当系统区域设置为UTF-8 #530时,Java启动程序无法解析汉字。
虽然该bug修复特别涉及传递给 Java 的文件名,但我认为它可能解释了为什么OP与javac的问题也在Java 19中得到了解决。
https://stackoverflow.com/questions/73665603
复制相似问题