首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP的Unicode问题

PHP的Unicode问题
EN

Stack Overflow用户
提问于 2012-06-20 19:55:53
回答 1查看 603关注 0票数 1

我使用dirscan php函数来获取文件名的数组,它返回的数组如下:

代码语言:javascript
复制
[8] => ?????? ?????.js
[9] => ???????? ?????  ??? ?????.js
[10] => ???????? ???????????? ????????.js
[11] => ?????????? ???.js
[12] => A Contra Corriente.js
[13] => ABC-CLIO Serials Web.js
[14] => ACL.js

前三个文件的名称是西里尔字母。我应该怎么做才能得到正确的文件名?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的一种,但严重损坏)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11118990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档