FSpark 2023年01月15日 10:03
先决条件:
- 盘为 NTFS,ext4 等支持硬链的文件系统
- 安装 Node.js 环境
网上目前的解决方案:
Windows 中官方的 NFS 支持提供的 mount 不支持 UTF-8 编码,导致了乱码的产生。如果需要 Windows 支持,考虑以下一些方法:
- 使用 fuse-convmvfs 修改服务端文件的编码,详见此 Super User 上的回答。
- 找一个别的 Windows 的 NFS 客户端。
- 如果正在使用新版的 Windows 10,在区域设置中启用 Beta 版本的 UTF-8 支持。注意这可能会导致一部分软件出现乱码。
如果要取消挂载,使用 umount 即可。
一个 NFS 的简介 - LUG @ USTC
以下是结果:
- fuse-convmvfs
- 用了,但映射出来的盘文件列表是空的。(可能和不能硬链有关?)
- 别的Windows NFS客户端
- 还没试过
- Windows Beta UTF-8 支持
- 试过,会导致原本一些正常的软件出错,而且是有多离谱多离谱
新方案
受 fuse-convmvfs, pnpm 和 calibre 启发的,用硬连接映射出个音译后文件名的安全目录不就好了
用到两个库,自己缝合一下就好了
- likun7981/hlink: 批量、快速硬链工具(The batch, fast hard link toolkit)
- dzcpy/transliteration: UTF-8 to ASCII transliteration / slugify module for node.js, browser, Web Worker, React Native, Electron and CLI.
再指个路:packages/core/src/utils/index.ts/getOriginalDestPath()
什么?说了这么多要我自己缝合?
嗯,因为发现我的exFAT不支持硬链接甚至软连接就没心思再整了。嗯?你说为啥不用NTFS?我就从NTFS来的,正常的Android无法OTG挂载哦。
一个能被内核直接支持且性能优异的方案却落得如此下场。