PHP Unicode文件名

时间:2012-10-10 10:47:57

标签: php .htaccess unicode filenames

PHP无法处理带有Unicode字符的文件:当我在浏览器上访问 testSite /главная.php时,会抛出此错误。

  

警告:未知:无法打开流:第0行的“未知”中没有此类文件或目录

     

致命错误:未知:在第0行的Unknown中打开所需的'blah / blah / testSite /главнаÑ.php'(include_path ='.; C:\ xampp \ php \ pear \')失败

然而 testSite /главная.html没问题。

无论如何我可以绕过这个或者我是否必须使用更好的处理Unicode的编程语言?

Apache htdocs in folder with unicode name

5 个答案:

答案 0 :(得分:0)

打开带有unicode文件名的php文件是 php的东西,但取决于底层操作系统。只要操作系统支持unicode文件名,它就可以工作。

在我的debian squeeze中,这根本不是问题,并且创建名为главная.php的文件的Windows 7(netbeans运行)没有问题:

include 'главная.php';

enter image description here

答案 1 :(得分:0)

在我看来,您的网络服务器对URI使用win-1252编码。 尝试在你的apache / nginx /无论配置中设置utf-8。 如果仅在require()/ include()上下文中使用unicode名称,则还可以使用iconv()/ mb_convert_encoding()转换编码。

答案 2 :(得分:0)

也许它有效:

mb_internal_encoding('UTF-8');
ini_set('default_charset', 'UTF-8');

答案 3 :(得分:0)

这是不可能的。

以下是解释原因

的主题

Can a PHP file name (or a dir in its full path) have UTF-8 characters?

答案 4 :(得分:0)

使用" wfio://"在PHP5中

https://github.com/kenjiuno/php-wfio

对于文件夹访问,请使用fix:

.htaccess:

php_value auto_prepend_file C:/fix.php

fix.php:

$file = $_SERVER['SCRIPT_FILENAME'];
if (!is_readable($file)) {
    $file="wfio://".$file;
                include $file;
                exit;
        }