我正在创建一个非常简单的文件搜索,其中搜索数据库是一个文本文件,每行一个文件名。该数据库是使用 PHP 构建的,并且通过 grepping 文件(也使用 PHP)找到匹配项。
这在 Linux 中效果很好,但在使用非 ascii 字符时不适用于 Mac。看起来名称在 HFS+ (MacOSX) 上的编码方式与在 ext3 (Linux) 上的编码方式不同。这是一个test.php:
<?php
$mystring = "abcóüÚdefå";
file_put_contents($mystring, "");
$h = dir('.');
$h->read(); // "."
$h->read(); // ".."
$filename = $h->read();
print "string: $mystring and filename: $filename are ";
if ($mystring == $filename) print "equal\n";
else print "different\n";
运行 MacOSX 时:
$ php test.php
string: abcóüÚdefå and filename: abcóüÚdefå are different
$ php test.php |cat -evt
string: abcóü?M-^Zdefå$ and filename: abco?M-^Au?M-^HU?M-^Adefa?M-^J are different$
在 Linux(或 MacOSX 上安装了 nfs 的 ext3 文件系统)上运行时:
$ php test.php
string: abcóüÚdefå and filename: abcóüÚdefå are equal
$ php test.php |cat -evt
string: abcM-CM-3M-CM-<M-CM-^ZdefM-CM-% and filename: abcM-CM-3M-CM-<M-CM-^ZdefM-CM-% are equal$
有没有办法让这个脚本在两个平台上返回“相等”?