欢迎光临散文网 会员登陆 & 注册

Minecraft的疑难杂症#8-使用UTF-8编码导致无法打开在含中文字符路径下的游戏

2022-07-14 09:34 作者:北葵Starry  | 我要投稿

好久没来更新了,主要是最近空闲时间不多+接触的一些崩溃比较常见(或者是直接无解哈哈哈哈哈)

今天来放一个比较特别的崩溃,是关于使用了Unicode UTF-8编码规则处理一些特殊字符(如汉字)的问题。至于怎么引起的,应该是一些跟GBK编码规则上的冲突,具体如何冲突... ...能把MC启动起来就好了吧w

以下是我在本地测试的崩溃日志(崩溃日志行数不会太多,一般是启动就崩溃):


����: �Ҳ������޷��������� 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版  

补充补充:发完文章的第二天收到个崩溃解决的请求,也收到个是通过下面的方法解决的,和上面提到的不太一样所以我也贴出来:

[15七月2022 12:02:12.434] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, ShiomiyaShiori, --version, [1.16.5]鍩冨強鎵撶墝涔嬫梾, --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\[高清修复]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)

其实发现上面版本命名出现乱码(已加粗显示)一般情况其实也见得多,不过现在也要注意下有没有这种崩溃的可能性了(。然后,java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll的出现也可能要检查下是否需要进行下面解决方案的操作。

其他版本应该崩溃得差不多,都是有这种“�”奇怪字符组成的。

解决方案:

  • 取消勾选 使用unicode utf 8 提供全球语言支持 选项。

不少玩家遇到这种崩溃都是因为勾选了 使用unicode utf 8 提供全球语言支持 选项,请参照以下图片去取消这个选项。

出自 :java.lang.ClassNotFoundException: net.fabric... - Mod问答 - Minecraft(我的世界)中文论坛 - Qingraw的回复 - (https://www.mcbbs.net/forum.php?mod=redirect&goto=findpost&ptid=1321234&pid=25204874)


还在Beta(测试)版不是么,所以不要去勾选它嘛(

  • 如果第一条方案无效,或者你不想取消勾选以上选项,你也可以将游戏文件放到不含特殊字符的路径(例如由英文或数字字符命名储存的文件夹)。


这里是我的补充:
发了文章之后,从启动器给我的在启动的Forge版本实时日志里看,看到了那些乱码的中文:“错误:找不到或无法加载主类(第一行)原因:(第二行)”

就这样,该怎么整就怎么整,这只是补充。


相关链接:

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)

Minecraft的疑难杂症#8-使用UTF-8编码导致无法打开在含中文字符路径下的游戏的评论 (共 条)

分享到微博请遵守国家法律