FUSE 挂载路径不支持中文,会导致部分AppImage软件文件名中有中文打开失败,英文文件名没问题
本质是 FUSE 在传递路径时编码不匹配。解决办法要么把系统 locale 设为 UTF-8,要么把 AppImage 放到纯英文路径,要么直接用 --appimage-extract 绕过 FUSE 挂载。
--appimage-extract
一句话总结:FUSE 是让普通程序实现文件系统的桥梁,AppImage 靠它实现“自挂载”,但也因此对路径编码比较敏感。
grep 挂载名 /proc/mounts # 挂载点 /tmp/.mount_中文… 含中文即中招
方案 A — 最快(10 秒,不重打包) 挂载点取的是文件名前 6 字节,改成英文即可:
mv 中文名.AppImage yingwenming.AppImage
方案 B — 治本(保留中文名):用补丁版 runtime 重新打包
cd /home/user/.appimage-build # 别放 /tmp,tmpfs 只有 2G /path/to/出问题.AppImage --appimage-extract ./appimagetool -n --runtime-file ./runtime-type2-ascii squashfs-root 新名字.AppImage 出来的包文件名随便起中文,挂载点永远是 /tmp/.mount_XXXXXX。(打印的 desktop "hint" 警告无害。)
方案 C — 临时跑一下、不改文件
./xxx.AppImage --appimage-extract && ./squashfs-root/AppRun 提取目录必须可写。
No replies yet
Featured Collection
Popular Ranking
Popular Events
FUSE 挂载路径不支持中文,会导致部分AppImage软件文件名中有中文打开失败,英文文件名没问题
本质是 FUSE 在传递路径时编码不匹配。解决办法要么把系统 locale 设为 UTF-8,要么把 AppImage 放到纯英文路径,要么直接用
--appimage-extract绕过 FUSE 挂载。一句话总结:FUSE 是让普通程序实现文件系统的桥梁,AppImage 靠它实现“自挂载”,但也因此对路径编码比较敏感。
grep 挂载名 /proc/mounts # 挂载点 /tmp/.mount_中文… 含中文即中招
方案 A — 最快(10 秒,不重打包) 挂载点取的是文件名前 6 字节,改成英文即可:
mv 中文名.AppImage yingwenming.AppImage
方案 B — 治本(保留中文名):用补丁版 runtime 重新打包
cd /home/user/.appimage-build # 别放 /tmp,tmpfs 只有 2G
/path/to/出问题.AppImage --appimage-extract
./appimagetool -n --runtime-file ./runtime-type2-ascii squashfs-root 新名字.AppImage
出来的包文件名随便起中文,挂载点永远是 /tmp/.mount_XXXXXX。(打印的 desktop "hint" 警告无害。)
方案 C — 临时跑一下、不改文件
./xxx.AppImage --appimage-extract && ./squashfs-root/AppRun
提取目录必须可写。