解决有中文路径的文件无法双击打开

问题

众所周知,GBK编码是落后时代的产物,UTF-8编码是未来世界的方向,UTF-8终将取代GBK,就像IPV6终将取代IPV4一样。
近日更换了新的SSD,重装了系统,索性决定把自己的系统编码直接切换为UTF-8。可是这一切换带来了问题:路径中含有中文字符的.jar文件,不能通过双击打开了,但是不含中文字符的.jar文件仍正常。
经过分析,发现在Windows10中即使切换了系统编码为UTF-8,但是底层系统调用fork进程的过程却仍然使用的是GBK方式传递命令行参数。我可以理解,因为毕竟现在存在文件系统里的文件夹名都是GBK,总不能切换一下系统编码还得要递归所有文件全部转换文件名编码吧。
虽然内核已经很大程度上解决了这个问题:比如我在python里sys.argv拿到的命令行参数就是正确解码的str格式,不存在编码问题。大多数的软件也都可以正常运行,比如Office、Adobe全家桶之类打开中文文件一点问题都没发生过。然而不知道为什么,Java在这方面却存在严重的问题。(据说还有一些程序比如mc、mathematica也存在这个问题)
解决不了问题的程序,就只能从调用的命令行下手,于是我想到了这样的方式:把带有中文的路径中的路径部分提取出来作为CWD(当前工作目录),从而使创建进程时提供的命令行参数中只有文件名部分。这样只要文件名是全英文的,即使路径中有中文也没关系。指定的文件可以通过相对于CWD的相对路径打开,也就不用把中文的所在目录传进命令行了。

解决

写了一个脚本并发布在Github上,里面有详细的README。
https://github.com/Starrah/chinese_path_open