当前位置:  开发笔记 > 编程语言 > 正文

php readdir问题与日语文件名

如何解决《phpreaddir问题与日语文件名》经验,为你挑选了1个好方法。

我有以下代码

\n";
        }
    }
    closedir($handle);
}
?>

当它有像日语这样的mb语言时,它不能正常显示而是显示像kyuukyoku Choujin R ?????~?而不是kyuukyoku Choujin R研极极人あ〜る

无论如何要让它显示正确的名称或使其仍可由其他人下载?

谢谢你帮助我:)



1> bobince..:

我不能肯定地说PHP,但我怀疑它与Python 2的基本问题相同(之前添加了对Unicode字符串文件名的特殊支持).

我相信PHP正在使用标准C库'open'-et-al函数来处理文件名,这些函数是基于字节的.在Windows(NT)上,这些尝试使用系统代码页对真实的Unicode文件名进行编码.这可能是西方机器的cp1252(类似于ISO-8859-1),或日本机器上的cp932(类似于Shift-JIS).对于系统代码页中不存在的任何字符,您将获得"?" 字符,你将无法引用该文件.

为了解决这个问题,PHP必须像Python 3.0一样开始使用Unicode字符串作为文件名(以及其他所有内容),使用'_wopen'-et-al函数来获取Windows下文件名的本机Unicode访问.我希望这会发生在PHP6中,但目前你可能已经填满了.您可以将系统代码页更改为cp932以访问文件名,但您仍然可以获得'?' 其他任何Unicode字符的字符不是在按住Shift JIS,在任何情况下,你真的希望你的应用程序的内部串所有的移位,JIS,因为它是一个相当可怕的编码.

如果你自己的脚本选择如何存储文件,我强烈建议在本地使用简单的基于主键的文件名,如'4356',将真实的文件名放在数据库中,并使用重写/尾随路径部分提供文件. URL.将用户提供的文件名保存在您自己的本地文件名中是困难的,并且即使不必担心Unicode也会导致安全灾难.


+!:"将用户提供的文件名保存在您自己的本地文件名中很困难,即使不必担心Unicode,也会出现安全问题."
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有