这个答案可能无法帮助您解决问题,但我想我会给出一些可能有助于您(和其他人)研究的理论概述。
您可能还想阅读这篇文章。
无论如何,我们开始:
这里有很多东西在玩。
- NTFS 使用的编码以及 Google Filestore 使用的任何文件系统。
- 您用于创建和查看这些文件名的程序支持编码。
- 您正在使用的终端程序支持编码。
- NFSv3 支持的编码。
文件系统
在 Linux 上,文件名只有 2 条规则:它们不能包含斜杠 ( /
),它们不能包含空字节 ( \0
)。ASCII 和 UTF-8 与此规则兼容,这些基本上是 linux 文件系统支持的编码。
Windows可能有不同的想法。可能需要一些配置才能让 Windows 文件系统以不同的编码发出字符。
创建和列出文件
在 Linux 上,您的文件名几乎总是以 UTF-8 编码。然后,ls
和 kin 通常不会想太多,只是假设文件系统需要的上述规则。
Windowsdir
显然知道如何使用 NTFS 的字符编码,但它可以读取 Linux 的 UTF-8 文件名吗?据我所知,它通过一些配置支持它。
终端
现代 Linux 终端程序都是 UTF-8,但可能需要安装对其他字符集的支持(因为 Windows)。
在 Windows 上,截至去年,它似乎还没有得到完全支持。也许这已经改变了,或者你可能需要另一个终端。上述配置可能会有所帮助。
NFS
NFSv4.1 及更高版本明确支持 UTF-8 和 Unix <-> Windows 互操作性的明确目标。
NFSv3 没有这些,并且不保证对任何非 ASCII 的支持。
我找到了一种通过 NFSv3 支持 UTF-8 的实现,但 Google Filestore 的文档只说“支持任何 NFSv3 兼容的客户端”。
该怎么办
继续并重命名文件。互操作性还有更多问题,例如对保留字符的不同概念,有很多限制,最好的办法是确保所有文件名都是简单的纯 ASCII,我什至会避免文件名中的空格之类的东西,它让生活变得轻松多了。