From 5c70a594b06fe6b53297477b25fae88737f1bac5 Mon Sep 17 00:00:00 2001 From: allMagic <116283787+allMagicNB@users.noreply.github.com> Date: Sun, 9 Mar 2025 14:32:03 +0800 Subject: [PATCH] Encoding Fixed --- Plain Craft Launcher 2/Modules/Base/ModBase.vb | 10 +++++----- Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb | 10 ++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index 1e98911..916e6e0 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -838,16 +838,16 @@ Public Module ModBase '确保目录存在 Directory.CreateDirectory(GetPathFromFullPath(FilePath)) '写入文件 - If File.Exists(FilePath) Then - '如果文件存在,刷新目前文件 - Using writer As New StreamWriter(FilePath, Append, If(Encoding, GetEncoding(ReadFileBytes(FilePath)))) + If Append Then + '追加目前文件 + Using writer As New StreamWriter(FilePath, True, If(Encoding, GetEncoding(ReadFileBytes(FilePath)))) writer.Write(Text) writer.Flush() writer.Close() End Using Else - '如果文件不存在,则新建并写入 - File.WriteAllText(FilePath, Text, If(Encoding, New UTF8Encoding(False))) + '直接写入字节集 + File.WriteAllBytes(FilePath, If(Encoding Is Nothing, Encoding.UTF8.GetBytes(Text), Encoding.GetBytes(Text))) End If End Sub ''' diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 01b1bab..903cd19 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1317,14 +1317,15 @@ Retry: McLaunchLog("开始获取 Minecraft 启动参数") '获取基准字符串与参数信息 Dim Arguments As String + Arguments = If(McLaunchJavaSelected.VersionCode > 8, "-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8", Nothing) '#4700 If McVersionCurrent.JsonObject("arguments") IsNot Nothing AndAlso McVersionCurrent.JsonObject("arguments")("jvm") IsNot Nothing Then McLaunchLog("获取新版 JVM 参数") - Arguments = McLaunchArgumentsJvmNew(McVersionCurrent) + Arguments += " " & McLaunchArgumentsJvmNew(McVersionCurrent) McLaunchLog("新版 JVM 参数获取成功:") McLaunchLog(Arguments) Else McLaunchLog("获取旧版 JVM 参数") - Arguments = McLaunchArgumentsJvmOld(McVersionCurrent) + Arguments += " " & McLaunchArgumentsJvmOld(McVersionCurrent) McLaunchLog("旧版 JVM 参数获取成功:") McLaunchLog(Arguments) End If @@ -2050,6 +2051,7 @@ IgnoreCustomSkin: '输出 bat Try Dim CmdString As String = + $"{If(McLaunchJavaSelected.VersionCode > 8, "chcp 65001>nul" & vbCrLf, Nothing)}" & "@echo off" & vbCrLf & "title 启动 - " & McVersionCurrent.Name & vbCrLf & "echo 游戏正在启动,请稍候。" & vbCrLf & @@ -2142,8 +2144,8 @@ IgnoreCustomSkin: StartInfo.EnvironmentVariables("Path") = Join(Paths.Distinct.ToList, ";") '设置其他参数 - StartInfo.StandardErrorEncoding = Encoding.UTF8 - StartInfo.StandardOutputEncoding = Encoding.UTF8 + StartInfo.StandardErrorEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing) + StartInfo.StandardOutputEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing) StartInfo.WorkingDirectory = ShortenPath(McVersionCurrent.PathIndie) StartInfo.UseShellExecute = False StartInfo.RedirectStandardOutput = True