Merge pull request #5818 from allMagicNB/encoding-fix

修复编码
This commit is contained in:
龙腾猫跃
2025-03-14 22:47:53 +08:00
committed by GitHub
2 changed files with 11 additions and 9 deletions
@@ -838,16 +838,16 @@ Public Module ModBase
'确保目录存在 '确保目录存在
Directory.CreateDirectory(GetPathFromFullPath(FilePath)) Directory.CreateDirectory(GetPathFromFullPath(FilePath))
'写入文件 '写入文件
If File.Exists(FilePath) Then If Append Then
'如果文件存在,刷新目前文件 '追加目前文件
Using writer As New StreamWriter(FilePath, Append, If(Encoding, GetEncoding(ReadFileBytes(FilePath)))) Using writer As New StreamWriter(FilePath, True, If(Encoding, GetEncoding(ReadFileBytes(FilePath))))
writer.Write(Text) writer.Write(Text)
writer.Flush() writer.Flush()
writer.Close() writer.Close()
End Using End Using
Else 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 If
End Sub End Sub
''' <summary> ''' <summary>
@@ -1317,14 +1317,15 @@ Retry:
McLaunchLog("开始获取 Minecraft 启动参数") McLaunchLog("开始获取 Minecraft 启动参数")
'获取基准字符串与参数信息 '获取基准字符串与参数信息
Dim Arguments As String 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 If McVersionCurrent.JsonObject("arguments") IsNot Nothing AndAlso McVersionCurrent.JsonObject("arguments")("jvm") IsNot Nothing Then
McLaunchLog("获取新版 JVM 参数") McLaunchLog("获取新版 JVM 参数")
Arguments = McLaunchArgumentsJvmNew(McVersionCurrent) Arguments += McLaunchArgumentsJvmNew(McVersionCurrent)
McLaunchLog("新版 JVM 参数获取成功:") McLaunchLog("新版 JVM 参数获取成功:")
McLaunchLog(Arguments) McLaunchLog(Arguments)
Else Else
McLaunchLog("获取旧版 JVM 参数") McLaunchLog("获取旧版 JVM 参数")
Arguments = McLaunchArgumentsJvmOld(McVersionCurrent) Arguments += McLaunchArgumentsJvmOld(McVersionCurrent)
McLaunchLog("旧版 JVM 参数获取成功:") McLaunchLog("旧版 JVM 参数获取成功:")
McLaunchLog(Arguments) McLaunchLog(Arguments)
End If End If
@@ -2050,6 +2051,7 @@ IgnoreCustomSkin:
'输出 bat '输出 bat
Try Try
Dim CmdString As String = Dim CmdString As String =
$"{If(McLaunchJavaSelected.VersionCode > 8, "chcp 65001>nul" & vbCrLf, Nothing)}" &
"@echo off" & vbCrLf & "@echo off" & vbCrLf &
"title 启动 - " & McVersionCurrent.Name & vbCrLf & "title 启动 - " & McVersionCurrent.Name & vbCrLf &
"echo 游戏正在启动,请稍候。" & vbCrLf & "echo 游戏正在启动,请稍候。" & vbCrLf &
@@ -2142,8 +2144,8 @@ IgnoreCustomSkin:
StartInfo.EnvironmentVariables("Path") = Join(Paths.Distinct.ToList, ";") StartInfo.EnvironmentVariables("Path") = Join(Paths.Distinct.ToList, ";")
'设置其他参数 '设置其他参数
StartInfo.StandardErrorEncoding = Encoding.UTF8 StartInfo.StandardErrorEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing)
StartInfo.StandardOutputEncoding = Encoding.UTF8 StartInfo.StandardOutputEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing)
StartInfo.WorkingDirectory = ShortenPath(McVersionCurrent.PathIndie) StartInfo.WorkingDirectory = ShortenPath(McVersionCurrent.PathIndie)
StartInfo.UseShellExecute = False StartInfo.UseShellExecute = False
StartInfo.RedirectStandardOutput = True StartInfo.RedirectStandardOutput = True