【发布时间】:2013-07-15 05:19:28
【问题描述】:
不幸的是,我允许用户将文件上传到服务器而无需先清理其名称(Linux、PHP、MySQL)。
其中一个上传的文件名为“E_M_20-06-2013_14-15_ComidasTípicas.zip”(在 MySQL 数据库中是正确的,UTF-8 编码)。
但是当我尝试在 PHP 中执行 fopen() 时,我找不到这个文件。根据语言环境 (LANG),我检索不同的文件名,例如:
$ export LANG=pt_BR.UTF-8
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasTÃpicas.zip
$ export LANG=pt_BR.ISO-8859-1
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasT▒?picas.zip
$ export LANG=C
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasT????picas.zip
有人可以帮助我了解如何使用 PHP 打开此文件吗?
PS:当然,我试过utf8_encode、utf8_decode,都没有成功。
提前致谢!
【问题讨论】:
-
你的 PHP 文件是什么编码的?你怎么
fopen()文件,文件名从哪里来的?
标签: php linux filenames non-ascii-characters