【问题标题】:php unlink() non-ascii characters = file not found [closed]php unlink()非ascii字符=找不到文件[关闭]
【发布时间】:2014-08-27 22:16:36
【问题描述】:

简而言之;

如果文件名为 asci,则 php unlink 正在处理文件。但是,如果我尝试删除名称包括 ç ö 等的文件,则取消链接生成文件未找到错误。

有什么办法可以解决这个问题吗?还是PHP和操作系统的关系造成的问题。

【问题讨论】:

  • 你能发布你正在尝试的代码吗?
  • 看起来像一个编码问题,即您以 ISO-8559-1 格式传递文件名,但在操作系统中该名称是 UTF-8。
  • 如果服务器是类似 debian 的,请从控制台向我们提供 locale 输出

标签: php unlink


【解决方案1】:

这绝对是一个编码问题。

试试这个(如果 './çö' 不是 UTF-8,例如动态加载):

unlink(mb_convert_encoding('./çö', 'UTF-8'))

也许您使用的是 Windows?来自here

unlink(iconv('utf-8', 'cp1252', './çö'));

无论如何:您应该避免使用这些文件名。如果它来自用户:永远不要相信用户输入!

【讨论】:

  • 所以我应该根据操作系统读写文件名。 .我应该使用代码页转换将 bin 数据转换为编码字符串?
  • @user2102266 从未在文件名中看到 UTF-8 符号。你应该避免它。不明白你对第二部分的意思。
  • 是的,两者都在工作。 unlink(mb_convert_encoding('./çö', 'UTF-8')) 用于灯。 unlink(iconv('utf-8', 'cp1252', './çö')); 代表 wamp。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 2011-07-29
  • 2011-04-04
相关资源
最近更新 更多