以下各节介绍多平台环境的特定注意事项。
NFS 版本 4 协议(Oracle Solaris 中的缺省协议)使用 UTF-8 处理文件名和其他字符串。因此在多数使用案例中,无需进行字符集相关的调整。但是,请注意,如果一些或所有客户机都将使用指定的字符集,则可以使用 charset 选项。
例如,要使用 ISO8859-1 字符集共享 /export 目录,请使用以下命令:
# share -o iso8859-1 /export
要仅对某些计算机使用特定的字符集来共享目录,可以使用 charset=access_list 选项:
# share -o iso-8859-1=isomachine.example.com,koi8-r=koimachine.example.com /export
客户机创建的所有文件和路径名都将在服务器上转换为 UTF-8。
有关更多信息,请参见 share_nfs(1M) 手册页。
mount_pcfs(1M) 不支持 MS-DOS 代码页,因此 MSDOS、旧版 MS Windows 或 Linux "msdos" 驱动程序创建的 FAT 文件系统中的非 ASCII 字符可能会乱码。以后的 FAT 实现将使用 Unicode 进行字符表示,缺省情况下,Oracle Solaris 完全支持该实现进行读写。
归档文件名中包含非 ASCII 字符的文件可能会产生问题,因为在特定归档格式的大量实现中对非 ASCII 文件名的支持有很大差别,但该情况正在改善。
UNIX 和类似 Unix 的系统上的最新 tar 实现支持 POSIX.1-2001 指定的 POSIX 格式,因此可以安全地处理非 ASCII 文件名。在 MS Windows 平台上,很多归档实用程序使用当前的代码页存储文件名,因此从此类归档中提取的文件名可能会乱码。
在该情况下,如果代码页已知,可以使用 convmv(1) 工具修复文件名:
$ convmv -f cp437 -t utf8 my_extracted_filename
在 Zip 文件中,原始规范将文件名和文件注释的编码设置为 IBM437。在 2007 年,PKWare 将规范扩展为也允许使用 UTF-8。同时,各种 zip 实现采用将当前代码页用作文件名编码(通常在 MS Windows 平台上)的策略。
Oracle Solaris 10 和 Oracle Solaris 11 中使用了 Info-ZIP 的 Zip 3.0,后者采用 UTF-8 编码存储文件名,因此如果压缩和解压缩实用程序都是此版本,归档内容将不会损坏。
当在 Oracle Solaris 上提取使用非 UTF-8 编码存储文件名的 zip 归档时,文件名可能会出现乱码。如果代码页已知,可以使用 convmv(1) 工具修复文件名:
$ convmv -f cp437 -t utf8 my-unzipped-filename