感觉这是个很严重的基本问题,但我发现好像从来没人碰到过就我中奖了一样……因为无论 google 搜了一圈确实有零星涉及到文件名编码问题,但都跟我没直接关联或也没正确答案……
是这样的,尽可能 tl;dr。因为 macos 原生自带 ntfs 只读,我的 ntfs 盘里有大量的音乐文件,最近在找本地音乐播放器,发现 deadbeef 跟 fb2k 十分相像,就用 deadbeef 加载 ntfs 下的音乐文件夹路径,结果在加载扫描的过程中突然爆一堆音乐文件读取错误的 log,我就随着路径在 finder 下查看,发现读取错误的文件压根就没在 finder 下显示,打开隐藏文件显示也没有。在终端里 ls -al 也不显示。比如一张专辑 10 首歌,只显示 1,2,3,5,7…… 起初我吓一跳,难道神奇的全都丢失文件了?赶紧回 windows 下查看,发现全在。
最后不断试错排比终于找到原因,那些不显示的文件名全都有字母头上多了个音节符号之类,如顶了个小句号,一些假名头上顶了个小句号就不会显示(带假名的文件本身会显示,甚至和汉字混搭都能正常显示,但个别假名头上顶了音节符号导致整个文件就神奇蒸发)。原来是碰到了文件名编码问题。神奇的是,在 windows 下并不存在文件名编码问题,虽然文件名有个 m 头上顶个小句号,但在搜索过程中, windows 会视为等同 m 字母。而 macos 下就直接把整个文件给我彻底消失不显示了…… 我在 windows 里重新改名 回到 macos 的 finder 下就正常显示出来了……