我一直试图将我的 iTunes 资料库导入 Banshee,但 Banshee 找不到包含拉丁重音的歌曲。它可以很好地导入大多数歌曲,但包含 é、è、ç、ñ 等重音的歌曲除外... 它显示“文件不存在”,尽管文件在我的硬盘中,并且重音在 Nautilus 中显示正确,在 Banshee 错误报告中也显示正确!
我发现问题错误日志但回复说这不是 Banshee 的 bug,问题可能来自 Mac 上的文件(?)。我也在ubuntu论坛但到目前为止还没有回复...我尝试将 Mac .xml 文件“另存为”到 Ubuntu 软件中,希望它能正确编码,但似乎没有任何效果。我最后一次尝试使用 UTF-8 迁移工具(来自软件中心),但它说:
未找到您当前的编码,或者您正在使用 C 语言环境。请选择支持的语言
/usr/share/i18n/SUPPORTED
并重新登录。
(不知道这是什么意思,我的系统现在配置为 en_US.UTF-8)
这里有谁能帮助我理解这一点吗?
答案1
我猜它与分解与预组合变音字符有关:在 Unicode 中,你可以将许多变音字符(如 é)写成一个字符(“预组合”,NFC),也可以将其写成基本字符“e”和附加重音字符(“分解”,NFD)的组合,请参阅
OS X 总是使用分解字符作为文件名。Linux 文件系统不关心字符,而只是将字节存储为文件名并让程序解释它们。NFC 和 NFD 导致不同的字节序列,Linux 认为生成的文件名不同。Linux 下的大多数程序都使用 NFC。
我不知道有什么程序可以在这两种编码形式之间转换文本。该程序康维(默认情况下未安装)可以在 NFC 和 NFD 之间转换文件名。也许这有帮助,但可能会导致其他问题,所以要小心。
答案2
我遇到了同样的问题,我在 Debian 服务器上使用了 convmv 工具。它非常有效。
我使用以下命令行将 NFD 转换为 NFC(对于目录中的文件):
convmv -r --nfc --nosmart -f UTF-8 -t UTF-8 --notest DIRECTORY