一尘不染

如何在PHP中打开名称为Unicode字符的文件?

php

例如,我有一个这样的文件名-проба.xml,但无法从PHP脚本中打开它。

如果我将php脚本设置为utf-8,则脚本中的所有文本均为utf-8,因此当我将其传递给file_get_contents时:

$fname = "проба.xml";
file_get_contents($fname);

我收到文件不存在的错误。这样做的原因是,在Windows(XP)中,所有带有非拉丁字符的文件名都是Unicode(UTF-16)。好,所以我尝试了这个:

$fname = "проба.xml";
$res = mb_convert_encoding($fname,'UTF-8','UTF-16');
file_get_contents($res);

但是错误仍然存​​在,因为file_get_contents无法接受unicode字符串…

有什么建议么?


阅读 283

收藏
2020-05-29

共1个答案

一尘不染

到目前为止,这些结论是:

  1. PHP 5不能使用Unicode字符打开文件名,除非源文件名是Unicode。
  2. PHP 5(至少在Windows XP上)无法处理Unicode中的PHP源代码。

因此,结论在PHP 5中不可行。

2020-05-29