0

奇妙な問題があります。私の開発サーバーではすべてが機能しますが、ライブサーバーでは機能しません。「ö」のような特殊文字が含まれるフォルダがあります。開発サーバーでは、ファイル名がディレクトリ($ dir ="coördinatie")であるかどうかを確認するためにこれを行います。

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

結果は本当です。ライブサーバーでは、結果はfalseです。奇妙なことに...ハードコードされた文字列は正常に機能し、結果は真です。このような:

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

文字列などに型キャストしてみましたが、わかりません。誰かが手がかりを持っていることを願っています。

4

1 に答える 1

2

私の推測はこれでしょう:

urldecode通常、UTF-8にデコードします。
ソースコードはそのように保存されるため、ハードコードされた文字列はラテン語-1である可能性があります。
Unicodeのようなローカルマシン上のファイルシステム(関数)、Latin-1のような本番環境のファイルシステム。

文字列をファイルシステムが期待するエンコーディングに変換する必要がある場合があります。両方の文字列
のの値を比較することで、私の疑いを確認できます。bin2hex

于 2012-04-27T13:03:27.047 に答える