残念ながら、最初に名前をサニタイズせずにユーザーがファイルをサーバーにアップロードできるようにしました (Linux、PHP、MySQL)。
アップロードされたファイル名の 1 つは「E_M_20-06-2013_14-15_ComidasTípicas.zip」です (MySQL データベースでは正しいもので、UTF-8 でエンコードされています)。
しかし、PHP で fopen() を実行しようとすると、このファイルが見つかりません。ロケール (LANG) に応じて、さまざまなファイル名を取得します。
$ export LANG=pt_BR.UTF-8
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasTÃpicas.zip
$ export LANG=pt_BR.ISO-8859-1
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasT▒?picas.zip
$ export LANG=C
$ ls ../web/downloads/E_M_20-06-2013_14-15_ComidasT*
../web/downloads/E_M_20-06-2013_14-15_ComidasT????picas.zip
PHPを使用してこのファイルを開く方法を見つけるのを手伝ってくれる人はいますか?
PS: もちろん、utf8_encode、utf8_decode を試しましたが、成功しませんでした。
前もって感謝します!