Windows

使用 Windows10-NFS-client 和 Linux-NFS-server 對文件名進行類 Unicode 編碼

  • November 26, 2020

問題

Windows10 Pro的NFS-Client預設掛載一個NFS-share lang=ansi。這會導致使用帶有變音符號或亞洲字元(例如漢字、平假名、片假名等)的文件名出現問題。

有關我的設置的詳細資訊

伺服器是Debian GNU/Linux 10.6 (buster)。該伺服器支持 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

但它們中沒有一個對我有用。

有沒有可能的解決方案?

AFAIK,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 個字節。

IOW,NFS v3 不支持 unicode

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

引用自:https://serverfault.com/questions/1043475