0

我有一个奇怪的问题。在我的开发服务器上,所有东西都可以工作,但在实时服务器上却不行。我有一个文件夹,里面有一个像“ö”这样的特殊字符。在开发服务器上,我这样做是为了检查文件名是否为目录($dir =“coördinatie”):

 if (is_dir(urldecode($dir)))
  echo "true";
 else {
  echo "false";
 }

结果是真的。在实时服务器上,结果是错误的。奇怪的是......硬编码的字符串工作正常,结果是真的。像这样:

 if (is_dir("coördinatie"))
  echo "true";
 else {
  echo "false";
 }

我尝试将类型转换为字符串等,但我无法弄清楚。希望有人有线索。

4

1 回答 1

2

我的猜测是:

urldecode通常解码为 UTF-8。
您的硬编码字符串可能是 Latin-1,因为源代码是这样保存的。
本地机器上的文件系统(函数)如 Unicode,生产中的文件系统(函数)如 Latin-1。

您可能必须将字符串转换为文件系统所需的编码。
您可以通过比较bin2hex两个字符串的值来证实我的怀疑。

于 2012-04-27T13:03:27.047 回答