From 43986676d8a265d8c875e612412e16ac241b5dd4 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 8 Oct 2022 17:10:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=AD=E6=96=87=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E4=B8=8B=E5=90=AF=E5=8A=A8=20<=3D=201.12.2=20?= =?UTF-8?q?=E7=9A=84=E7=89=88=E6=9C=AC=E6=B2=A1=E6=9C=89=E5=A3=B0=E9=9F=B3?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20(#1754)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use native encoding by default * Fix the problem that LWJGL fails to load OpenAL under Java 18 --- .../org/jackhuang/hmcl/launch/DefaultLauncher.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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); }