在上面的屏幕截图中,Finder 尝试(通过 SMB)访问共享文件夹中的目录“1_ã”并创建子文件夹,这导致了错误。出现此问题的原因是字符“ã”使用范式 D (NFD) 进行编码,此范式是“标准分解”Unicode 范式。
然而,在客户端,Finder 使用范式 C (NFC) 发送请求,此范式是“标准分解”格式。因此,NAS 服务器无法识别目录名或查找目录,因此服务器报告错误。
这一差别也可能导致名称中包含 NFD 格式字母的文件夹中的文件不显示和不可编辑。在此类文件夹中执行重命名、创建或编辑文件等操作可能失败。
此错误是由服务器和客户端使用两个不同的 Unicode 范式而导致的。用户尝试通过 SMB 访问 NAS 服务器上的共享文件夹时,客户端会发送请求确认目录中有哪些文件。NAS 服务器收到请求时,会将目录中的所有文件名发送到客户端。文件名使用不同的 Unicode 范式(在本例中,服务器端为 NFD,客户端为 NFC)时,便会出现问题。将文件保存到 NAS 服务器时,如果客户端选择其他格式,便会出现这种情况。客户端收到文件名时,会要求服务器显示这些文件或请求在目录中创建一个新文件。请求的编码格式取决于客户端的设置。如果客户端请求的格式不同于服务器上使用的格式,服务器便无法找到文件或目录,然后报告错误。
但是,如果要将 NFD 格式的文件名转换为 NAS 上存储的文件的 NFC 格式,可以使用一项名为 convmv 的工具。请按下列步骤安装 convmv。
登录 NAS 并转到 App Center。
安装 Perl。
将文件保存到 NAS 上的目录。(例如,共享文件夹“Public”)
打开“Terminal”(终端)并建立 SSH 连接以登录到 NAS。
输入 convmv 所在文件夹的路径。
命令输入:Run: cd /share/Public
解压缩文件。
命令输入:Run: tar -xvf convmv-2.05.tar.gz
输入已解压文件所在的文件夹路径。
命令输入:Run: cd convmv-2.05
确保 convmv 为可执行程序。
命令输入:Run: chmod a+x convmv
修改 NAS 的 Perl shell 路径。
命令输入:Run: sed -i -e'1c\\#\!\/opt\/bin\/perl' convmv
转换文件名。
命令输入:Run: ./convmv -r --nfc --nosmart -f UTF-8 -t UTF-8 --notest
注意:
以上说明基于 x86_64 平台的 QTS 4.3.6 固件。使用先前的固件版本尝试这些步骤可能会产生不同的结果。例如,在第 10 步中 Perl shell 路径可能会有所不同,所以可能需要将其替换为正确的路径。
以上说明不适用于基于 ARM 的型号。