适用于 Windows 的基于 Unicode 的 POSIX 工具(Cygwin 除外)?

适用于 Windows 的基于 Unicode 的 POSIX 工具(Cygwin 除外)?

操作系统管理系统很棒,但似乎他们的所有工具都使用 Windows API 的 ANSI 版本,而不是 Unicode 版本。

显然,这些是针对 Windows 95 和 98 的,而不是 Windows XP 和 Windows 7......并且它们会导致任何非典型文件名、字符串等出现很多问题。

是否有类似的 POSIX 工具集(其他比 Cygwin 更早的版本使用 Unicode 版本的 Windows API(因此支持 Unicode)?

答案1

Microsoft 自己的 Unix 应用程序子系统 (SUA)。但仅适用于 Windows Ultimate 和 Enterprise。

更正:SUA 不支持 Unicode。根据其locale -a命令,它仅支持 ISO-8859-1、EUC-JP 和 SJIS。

相关说明一下,MKS 工具包是 Windows 的另一个类 Unix 环境,根据其Unicode.5手册页。

除非语言环境支持双字节字符(例如日语语言环境),否则 MKS Toolkit 实用程序无法处理文件名中的非 OEM 字符。因此,即使实用程序在所有平台上都支持文件中的 UTF-8 和 Unicode 字符,但为了在所有 Windows 平台上实现最大程度的可移植性,awk、sh、csh 等实用程序脚本中使用的所有文件名都应仅包含来自 OEM 代码页的 ASCII 字符。

答案2

我建议你尝试一下 UTF-8 Cygwin(http://www.oki-osk.jp/esc/utf8-cygwin/) 以实现 utf8 兼容性。

我使用的是基于 cygwin 的 DeltaCopy(安装时附带 cygwin1.dll)。它在处理中文文件名(文件名和文件夹名中的多字节字符)时遇到问题

在我将 cygwin1.dll 文件替换为“UTF-8 Cygwin”版本后,我同步到服务器的所有 Unicode 文件都正确上传到服务器。

这是一个非常简单的解决方案,因为“UTF-8 Cygwin”统计它处理unicode字符,但仍然保持与当前Cygwin的二进制兼容性。

相关内容