类似于IBMi的PHP ZendServer中的mb_glob
在IBM i中,以前称为/400的系统有一个包含以下元素的文件夹:类似于IBMi的PHP ZendServer中的mb_glob,php,character-encoding,ibm-midrange,glob,Php,Character Encoding,Ibm Midrange,Glob,在IBM i中,以前称为/400的系统有一个包含以下元素的文件夹: Àlex Corretgé DIR carpeta sense codi > DIR test.txt STMF Barça DIR Còpia de test.txt STMF 当我使用**模式运行时,即 array(5) { [0]=> string(89) "[...]/lex Corretg
Àlex Corretgé DIR
carpeta sense codi > DIR
test.txt STMF
Barça DIR
Còpia de test.txt STMF
当我使用**模式运行时,即
array(5) {
[0]=>
string(89) "[...]/lex Corretg"
[1]=>
string(81) "[...]/Bara"
[2]=>
string(95) "[...]/carpeta sense codis"
[3]=>
string(93) "[...]/Cpia de test.txt"
[4]=>
string(84) "[...]/test.txt"
}
注:[…]用于明确的用途
我阅读了PHP glob手册,但没有任何关于字符集问题的参考资料
我寻找mb_glob函数或类似函数。已经存在
我终于达到了我的水平
SF99115-20 IBM HTTP SERVER FOR I
以及PHP版本5.3.6扩展20090626
scandir函数运行时出现相同问题
但如果我这样做:
$handle = opendir($globPath);
while (false !== ($file = readdir($handle))) {
echo utf8_encode($file) . "\n";
}
结果是预期的!是的,我可以编写自己的mb_glob来防止多字节问题,但是有人知道是否有正式的替代方案吗?看起来PHP正在使用glob命令的系统实现:-如果您可以在操作系统级别上解决它,也许您可以解决这个问题。它在这里工作,在调用中返回专有名称,所以我确实怀疑这是操作系统级别的设置。。。也许不是不重要:文件名在哪个字符集?是的@hakre,是系统实现,我不能使用GLOB_BRACE,即@Wrikken应用程序创建的名称中包含非Ascii字符的文件,在charid 819中,我很好。但是从Windows上传的带有共享文件夹的文件在charid 1252中,我搞错了。谢谢如果我用STRQSH启动shell控制台并执行ls,即使使用从控制台创建的文件,也会得到错误的结果,即使用charid 284创建的echo Hello>MésIMés.txt。utf8_encodereaddir$dh按预期返回结果。