使用 Windows10-NFS-client 和 Linux-NFS-server 对文件名进行类似 Unicode 的编码

使用 Windows10-NFS-client 和 Linux-NFS-server 对文件名进行类似 Unicode 的编码

问题

NFS 客户端Windows10 专业版默认挂载 NFS 共享lang=ansi。这会导致使用带有变音符号或亚洲字符(例如汉字、平假名、片假名等)的文件名出现问题。

有关我的设置的详细信息

服务器是Debian GNU/Linux 10.6(破解版). 该服务器支持 NFS 版本从 3 到 4.2 (2 被禁用):

$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

客户端是Windows10-Pro build 19041。我不知道客户端使用哪个 NFS 协议版本。这些是挂载点的选项。

UID=-2, GID=-2
rsize=131072, wsize=131072
mount=soft, timeout=0.8
retry=1, locking=yes
fileaccess=755, lang=ANSI
casesensitive=no
s=sys

我知道其他选择为了lang=

euc-jp: Japanese
euc-tw: Chinese
euc-kr: Korean
shift-jis: Japanese
Big5: Chinese
Ksc5601: Korean
Gb2312-80: Simplified Chinese
Ansi: ANSI-encoded

但它们对我来说看起来都没用。

有什么可行的解决办法吗?

答案1

据我所知,Windows 支持 NFSv3,它使用 XDR细绳作为文件名的类型,仅限于 ASCII:

NFSv3 规范 https://www.rfc-editor.org/rfc/rfc1813#section-2.5

typedef 字符串文件名3<>;

https://www.rfc-editor.org/rfc/rfc1014#section-3.10

该标准定义了一个由 n 个(编号为 0 到 n-1)ASCII 字节组成的字符串,即将数字 n 编码为无符号整数(如上所述),后跟字符串的 n 个字节。

换句话说,NFS v3 不支持 unicode

https://www.rfc-editor.org/rfc/rfc1813#section-3.2

相关内容