1

残念ながら、最初に名前をサニタイズせずにユーザーがファイルをサーバーにアップロードできるようにしました (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 を試しましたが、成功しませんでした。

前もって感謝します!

4

2 に答える 2

0

使用してみてください:

$ export LANG=en_US.UTF-8

つまり、php では次のようになります。

setlocale(LC_ALL, 'en_US.UTF8');
于 2013-07-17T00:03:06.333 に答える