【发布时间】:2013-12-04 21:21:55
【问题描述】:
刚开始开发一个 perl 应用程序。需要一些建议如何(正确)处理 unicode filenames 与 filenames in the file content - 便携方式。
这里有几个系统,Windows 和 Unix 世界使用不同的 unicode 编码(Unixes utf8,Windows - 不知道),但是 Linux 和 Mac OS X 不同的文件名 unicode 规范化。 (OS X - 强制 NFD,Linux - “通常” NFC)。
我已经读过的所有建议都说:(总是在应用程序边界规范化 unicode 数据)-但问题是-什么是正确的-最便携的方法?
问题在于,OS X(创建文本文件时)使用 NFC 获取内容。我不知道其他系统使用什么。
那么问题是,制作便携式应用程序和处理文件名的正确方法是:
- opendir/readdir
- glob 和类似的“文件操作”
- 文本文件(将包含文件名)
- perl 内部...
- 其他?
何时何地进行标准化?如何保存 utf8 文本文件,其内容中包含文件名?
我知道,StacOverflow 中已经有许多与 perl-unicode 相关的问题。我可能挖掘了其中的大多数——但仍然不明白处理上述问题列表的“推荐”做法是什么。
是否需要制作模块来处理特定的操作系统差异?或者这里已经有 CPAN 模块处理文件操作中的操作系统差异?)
有人可以向我指出一些好的资源推荐做法吗?还是像我现在想的那样简单得多?
【问题讨论】:
-
Windows 2000 使用了
UCS-2。为了尽可能少地改变兴趣,他们现在使用UTF-16。我注意到其他大型跨国软件公司也走过了同样的道路。 -
AFAIR Perl 仍然不能保证您使用标准函数读取的文件名将采用任何特定编码,因此没有真正“可移植”的方式。
标签: perl utf-8 filenames normalization unicode-normalization