2017-06-02 8 views
2

imはPHPでいくつかのフォルダ/ファイルの読み込みに本当に問題があります。アクセント付きPHP未知のエンコーディング

「BAILÉN」という名前のフォルダがあり、特定のファイルの中に名前があります。私が "エコー"をすると "BAILE'N"と表示されます。 大きな問題は、ファイルを認識できないということです。関数is_file、is_dir、file_exist、rename、scandir ...が失敗します。

私は多くの文字セットでutf8_encode、decode、iconvを試みましたが、何も動作しませんでした。

これは、名前のファイルです:

https://mega.nz/#!w34XXa7Z!89NYKRBXkx3u-uaSYZd_E2LijDdzIf3trIUu8UrHE18

PHPバージョン5.6.12(私の英語が良くない場合は申し訳ありません)

はどうもありがとうございまし


編集:

誰か興味があれば。私のパートナーの

一つは、問題のある文字を(C#関数は、ファイルを認識)

私はHEX2BINとBIN2HEXで問題の文字を置き換えることができました置き換えるために、小さなC#アプリケーションを開発しました。しかし、私が何をしても、php関数はファイルを認識しませんでした。

私はphp関数がその文字に問題があり、何もできないと思います。

+0

悪いバイトコード:69 204 129、(ヘックス45 cc 81)thats E + COMBINING ACUTE ACCENT – Manuel

答えて

1

これは、Unicode正規表現の喜びに遭遇したためです。

「É」文字を表す方法はさらにあります。 utf-8 'C3 89' 資本金Eのアクセント記号のいずれかであるU+00C9。 またはU+0045 U+0301資本金+分音記号急性アクセント Utf-8 '45 cc 81 '。あなたは後者の場合です。

この問題をチェックする方法があります:PHP 5.3.0およびその静的関数から使用可能なクラスがあり、「E」

ためのU + 00C9ポイントコードを使用して「バイレン」を探してみてくださいそれは、これらの問題の解決を目指して:ところで http://php.net/manual/en/class.normalizer.php
http://php.net/manual/en/normalizer.normalize.php

を、ファイル名の記憶メカニズムは、ファイル・システムやOSに依存します。 ext * fsのLinux、whatverの* BSD、NTFSのWindowsでコードを実行すると、結果が異なる場合があります。

+0

"喜び" XD。私はphpにnormalizerをインストールしていないと思う。来週、U + 00C9とU + 0045 U + 0301を使用して置き換えて試してみます。どうもありがとうございました。それでもphpがなぜそれを認識しないのか分かりません。 – Manuel

関連する問題