Minecraft的疑難雜癥#8-使用UTF-8編碼導(dǎo)致無法打開在含中文字符路徑下的游戲
好久沒來更新了,主要是最近空閑時(shí)間不多+接觸的一些崩潰比較常見(或者是直接無解哈哈哈哈哈)
今天來放一個(gè)比較特別的崩潰,是關(guān)于使用了Unicode UTF-8編碼規(guī)則處理一些特殊字符(如漢字)的問題。至于怎么引起的,應(yīng)該是一些跟GBK編碼規(guī)則上的沖突,具體如何沖突... ...能把MC啟動(dòng)起來就好了吧w
以下是我在本地測試的崩潰日志(崩潰日志行數(shù)不會(huì)太多,一般是啟動(dòng)就崩潰):
????: ?????????????????? net.minecraft.launchwrapper.Launch
或者是
????: ?????????????????? net.minecraft.client.main.Main
我的世界原版(香草版)??
WARNING: Unknown module: cpw.mods.securejarhandler specified to --add-exports
WARNING: Unknown module: cpw.mods.securejarhandler specified to --add-opens
????: ?????????????????? cpw.mods.bootstraplauncher.BootstrapLauncher
???: java.lang.ClassNotFoundException: cpw.mods.bootstraplauncher.BootstrapLauncher
Forge版??
??
????: ?????????????????? net.fabricmc.loader.impl.launch.knot.KnotClient
???: java.lang.ClassNotFoundException: net.fabricmc.loader.impl.launch.knot.KnotClient
Fabric版??
補(bǔ)充補(bǔ)充:發(fā)完文章的第二天收到個(gè)崩潰解決的請求,也收到個(gè)是通過下面的方法解決的,和上面提到的不太一樣所以我也貼出來:
[15七月2022 12:02:12.434] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, ShiomiyaShiori, --version, [1.16.5]鍩冨強(qiáng)鎵撶墝涔嬫梾, --gameDir, G:\Minecraft\Pi\.minecraft, --assetsDir, G:\Minecraft\Pi\.minecraft\assets, --assetIndex, 1.16, --uuid, 84a3214c17714744af6b7640bf346f36, --accessToken, ????????, --userType, Mojang, --versionType, PCL2, --width, 854, --height, 480, --launchTarget, fmlclient, --fml.forgeVersion, 36.2.35, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20210115.111550]
[15七月2022 12:02:12.438] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 8.1.3+8.1.3+main-8.1.x.c94d18ec starting: java version 1.8.0_60 by Oracle Corporation
[15七月2022 12:02:12.465] [main/WARN] [cpw.mods.modlauncher.SecureJarHandler/]: LEGACY JDK DETECTED, SECURED JAR HANDLING DISABLED
[15七月2022 12:02:12.611] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.onLoad
[15七月2022 12:02:12.612] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFine ZIP file: G:\Minecraft\Pi\.minecraft\mods\[高清修復(fù)]OptiFine_1.16.5_HD_U_G8.jar
[15七月2022 12:02:12.614] [main/INFO] [optifine.OptiFineTransformer/]: Target.PRE_CLASS is available
[15七月2022 12:02:12.717] [main/INFO] [net.minecraftforge.fml.loading.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust
[15七月2022 12:02:12.772] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/G:/Minecraft/Pi/.minecraft/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=CLIENT
[15七月2022 12:02:12.784] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.initialize
[15七月2022 12:02:12.887] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:424]: [LWJGL] Failed to load a library. Possible solutions:
a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
b) Add the JAR that contains the shared library to the classpath.
[15七月2022 12:02:12.889] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:426]: [LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for Better diagnostics.
[15七月2022 12:02:12.889] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:428]: [LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for Better diagnostics.
[15七月2022 12:02:12.890] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll
[15七月2022 12:02:12.890] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.loadSystem(Library.java:147)
[15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.loadSystem(Library.java:67)
[15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.<clinit>(Library.java:50)
[15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.MemoryUtil.<clinit>(MemoryUtil.java:97)
[15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Pointer$Default.<clinit>(Pointer.java:67)
[15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Callback.<clinit>(Callback.java:40)
[15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.ClientVisualization.initWindow(ClientVisualization.java:55)
[15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.ClientVisualization.start(ClientVisualization.java:335)
[15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.accept(EarlyProgressVisualization.java:29)
[15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.FMLLoader.setupLaunchHandler(FMLLoader.java:176)
[15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.FMLServiceProvider.initialize(FMLServiceProvider.java:80)
[15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServiceDecorator.onInitialize(TransformationServiceDecorator.java:68)
[15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.lambda$initialiseTransformationServices$7(TransformationServicesHandler.java:107)
[15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.util.HashMap$Values.forEach(Unknown Source)
[15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.initialiseTransformationServices(TransformationServicesHandler.java:107)
[15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:59)
[15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.Launcher.run(Launcher.java:76)
[15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)
其實(shí)發(fā)現(xiàn)上面版本命名出現(xiàn)亂碼(已加粗顯示)一般情況其實(shí)也見得多,不過現(xiàn)在也要注意下有沒有這種崩潰的可能性了(。然后,java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll的出現(xiàn)也可能要檢查下是否需要進(jìn)行下面解決方案的操作。
其他版本應(yīng)該崩潰得差不多,都是有這種“?”奇怪字符組成的。
解決方案:
取消勾選?使用unicode utf 8 提供全球語言支持 選項(xiàng)。
不少玩家遇到這種崩潰都是因?yàn)楣催x了?使用unicode utf 8 提供全球語言支持?選項(xiàng),請參照以下圖片去取消這個(gè)選項(xiàng)。

還在Beta(測試)版不是么,所以不要去勾選它嘛(
如果第一條方案無效,或者你不想取消勾選以上選項(xiàng),你也可以將游戲文件放到不含特殊字符的路徑(例如由英文或數(shù)字字符命名儲(chǔ)存的文件夾)。
這里是我的補(bǔ)充:
發(fā)了文章之后,從啟動(dòng)器給我的在啟動(dòng)的Forge版本實(shí)時(shí)日志里看,看到了那些亂碼的中文:“錯(cuò)誤:找不到或無法加載主類(第一行)原因:(第二行)”
就這樣,該怎么整就怎么整,這只是補(bǔ)充。
相關(guān)鏈接:
java.lang.ClassNotFoundException: net.fabricmc.loader.impl.launch.knot.KnotCl... - Mod問答 - Minecraft(我的世界)中文論壇 - (https://www.mcbbs.net/forum.php?mod=redirect&goto=findpost&ptid=1321234&pid=25204874)