diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 53409aa8c..62da0d165 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -108,24 +108,26 @@ public class DefaultLauncher extends Launcher { res.addAllWithoutParsing(options.getJavaArguments()); - Charset encoding = StandardCharsets.UTF_8; + Charset encoding = OperatingSystem.NATIVE_CHARSET; if (options.getJava().getParsedVersion() < JavaVersion.JAVA_8) { try { String fileEncoding = res.addDefault("-Dfile.encoding=", encoding.name()); if (fileEncoding != null) encoding = Charset.forName(fileEncoding.substring("-Dfile.encoding=".length())); } catch (Throwable ex) { - encoding = OperatingSystem.NATIVE_CHARSET; LOG.log(Level.WARNING, "Bad file encoding", ex); } } else { - res.addDefault("-Dfile.encoding=", "UTF-8"); + if (options.getJava().getParsedVersion() > JavaVersion.JAVA_17 + && VersionNumber.VERSION_COMPARATOR.compare(repository.getGameVersion(version).orElse("1.13"), "1.13") < 0) { + res.addDefault("-Dfile.encoding=", "COMPAT"); + } + try { String stdoutEncoding = res.addDefault("-Dsun.stdout.encoding=", encoding.name()); if (stdoutEncoding != null) encoding = Charset.forName(stdoutEncoding.substring("-Dsun.stdout.encoding=".length())); } catch (Throwable ex) { - encoding = OperatingSystem.NATIVE_CHARSET; LOG.log(Level.WARNING, "Bad stdout encoding", ex); }