我使用dirscan php函数来获取文件名的数组,它返回的数组如下:
[8] => ?????? ?????.js
[9] => ???????? ????? ??? ?????.js
[10] => ???????? ???????????? ????????.js
[11] => ?????????? ???.js
[12] => A Contra Corriente.js
[13] => ABC-CLIO Serials Web.js
[14] => ACL.js前三个文件的名称是西里尔字母。我应该怎么做才能得到正确的文件名?
发布于 2012-06-21 00:44:49
我正在使用win7 ntfs
抱歉,在Windows下运行的PHP不支持包含常规Unicode字符的文件名。它只能处理完全由当前代码页中的字符组成的文件名。
该代码页可能是1252 (西欧,类似于ISO-8859-1),其中不包含西里尔文。如果您在俄语安装上运行它,那么您的代码页将是1251,并且西里尔字符可以工作-但是重音的拉丁语将中断。
这是一个影响所有从MS C运行时使用标准C stdio库调用的应用程序的问题,包括PHP、Java和其他应用程序。(有些语言,如Python,使用特定于Windows的API而不是C stdlib对Unicode文件名有特殊的支持;有Request 45517可以在PHP中实现同样的支持,但不要抱太大希望。)
在非Windows平台上,Unicode往往通过使用采用UTF-8编码的字节字符串来支持,因此所有Unicode字符都可以正常工作。不幸的是,Windows没有这个功能(代码页65001是UTF-8的一种,但严重损坏)。
https://stackoverflow.com/questions/11118990
复制相似问题