当前位置: 首页 > 面试题库 >

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

夏祺然
2023-03-14
问题内容

例如,我有一个这样的文件名-проба.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字符串…

有什么建议么?


问题答案:

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

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

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



 类似资料:
  • 问题内容: 在Python中: 现在,假设我有一个不知道其名称或编号的字符。是否有Python函数提供以下信息: ? 问题答案: 您可能会发现unicodedata模块很方便:

  • 我有一个数据库,它存储带有Unicode字符的视频游戏名称,但我不知道如何在将这些Unicode字符打印到超文本标记语言响应时正确转义它们。 例如,当我打印所有名为Uncharted的游戏时,我会得到以下信息: 但它应该显示以下内容: 我运行了一个快速的JavaScript转义函数,查看哪个Unicode字符™并发现它是。 如果我能得到字符以正确显示。我的猜测是以某种方式找到字符串中每个字符的十六

  • 问题内容: 我试过了 它回答: 如何以unicode而不是as形式打开文本文件? 问题答案: 编辑 对于Python 3,使用作为这个答案介绍是最好的选择。以下答案对于2.x可能仍然有用。我认为即使对于3.x,下面的任何内容实际上都不正确,但仍然更好。 如果文件是utf-8,则可以使用: 如果您要遍历可以使用的文件,则无法使用。 请注意,这两种方法对于多字节编码都不一定是安全的。例如,小尾数UTF

  • 问题内容: 这个问题看起来很尴尬,但我一直找不到答案。 与下面的C#代码行等效的PHP是什么? 此示例创建一个带有单个Unicode字符的字符串,该字符串的“ Unicode数值”为十六进制的1000(十进制的4096)。 也就是说,在PHP中,如何创建一个具有“ Unicode数值”已知的Unicode字符的字符串? 问题答案: 因为JSON直接支持语法,所以我想到的第一件事是: 另一种选择是使

  • 我有一个非常疯狂的问题与PhpStom,我不知道如何解决它。 我有一个名为“myclass.php”的空php文件,它似乎无法被PhpStom识别,因为图标是“?”。 当我试图用PhpStorm打开这个文件时,鼠标开始闪烁,我的IDE冻结,直到我重新启动它...但是,我可以从任何其他IDE(如记事本)中打开该文件。此外,我是唯一有这个问题的人,因为我的其他团队成员可以用他们的PhpStorm ID

  • 问题内容: 我将包含诸如 PéréquationLES HOPITAUX NEUFS.xls之 类的特殊字符 压缩 到另一个文件夹中,例如 temp 。 我可以压缩文件,但是问题是文件名自动更改为 P +¬r+¬报价LES HOPITAUX NEUFS.xls 。 如何在zip归档文件中支持Unicode字符作为文件名? 问题答案: 这一点取决于您用于创建存档的代码。在 旧 的Java压缩类不是很