2025年Ubuntu源码(Ubuntu源码编译)

Ubuntu源码(Ubuntu源码编译)为了玩某游戏 折腾了一天总算摸索出了一些头绪 在此简单分享下 首先是思路来源 spm id from 333 337 0 0 其次如正渠道 dlsite 正在做活动 众所周知大部分 rpg 小游戏都需要 windows 环境 尤其是日语 windows 环境 大佬提供了 nw js 来加载游戏文件以实现游玩的思路 这里来解决下 linux 解压常遇到的编码问题 众所周知 中文 windows 使用 gbk gb2132 编码 而日文 windows 使用 shift jis 编码 在 windows 下

为了玩某游戏,折腾了一天总算摸索出了一些头绪,在此简单分享下,首先是思路来源:;spm_id_from=333.337.0.0

其次如正渠道dlsite正在做活动,


众所周知大部分rpg小游戏都需要windows环境,尤其是日语windows环境

大佬提供了nw.js来加载游戏文件以实现游玩的思路

这里来解决下linux解压常遇到的编码问题

众所周知,中文windows使用gbk(gb2132)编码,而日文windows使用(shift-jis)编码

在windows下,常有大佬制作的le等转区工具,以解决乱码问题

但linux下一切都得靠自己,linux的默认编码使用utf-8

虽然大部分作者在制作游戏时,会考虑编码问题,主动作utf-8转码

但碰到未作任何处理的作品,就让人很难受了

今天碰到的一个游戏就是在文件名使用了shift-jis + ascii +未知编码的一个奇葩

所以不能借助现成工具,只能自写脚本来解决它

在说脚本方案前,先简单介绍下为什么不用convmv及iconv

这两个工具是linux下大名鼎鼎的转码工具

convmv仅转换文件名,iconv可以转换文件名的文件内容

对于文档内容乱码iconv可以很好工作

具体到压缩包的解压时,这两个工具都无法介入解压过程,因此无法使用

解压软件如p7z等,为提供在解压时,使用什么编码去识别文件名,默认系统用什么编码,它们就用什么编码解压

也就是说文件名在解压的过程中,它会被utf-8格式化,格式化过程中可能会丢失一些信息,导致再使用convmv转码时失败

所以,需要写一个脚本,强制解压时使用shift-jis进行解码,由于ascii可以看作shift-jis编码的一个子集,因此最简单的方案就是开启忽略报错,所有文件都使用shift-jis进行解码

以下是python3脚本,使用的都是python自带的包文件,复制即可使用


代码虽然内置了几种编码,为了缩写功能,实际生效的只有shift-jis,如果需要自己探索编码类型,按照这个注释做即可

            #如果想看是哪些文件使用了混合编码,即使用shift-jis无法解码的,将errors='ignore'删除即可
            return filename_bytes.decode(enc,errors='ignore') 


就先这样吧

文件名称是这个顺序读取、写入的

压缩包(二进制)-》文件名字符序列(十六进制)-》解码(字符串)-》创建文件并写入解压数据(二进制)

编程小号
上一篇 2025-01-24 18:40
下一篇 2025-04-01 15:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/68603.html