Oracle® Solaris 11.2 国际语言环境指南

退出打印视图

更新时间: 2014 年 7 月
 
 

包含非 ASCII 文件名的归档

归档文件名中包含非 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