4

ファイルをアップロードして、(HTML フォームのテキスト フィールドを介して) 「Åäöô - KARL」という独自の名前を付けた場合を除いて、すべてがうまく機能しています。

サイト用にカスタムの fileupload/handler/cms を作成しましたが、ファイルがアップロードされるとき以外はすべて機能します。

ftp プログラムを介してファイル アップロード ディレクトリを直接見ると、ファイル名が突然 "ã…ã¤ã¶ã - KARL" になっています。

  • <meta charset="UTF-8" />すべてのページの開始時にhtml5を実行します
  • BOMなしのUTF-8でコードを書きながらエンコードします

試してみましたがiconv()、足りないものはありますか? 私はそれがhtmlフォーム$_POST['name_of_file']とコマンドを実行したときの間にあるのではないかと疑っています

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_POST['name_of_file'])

進捗状況:実際に「utf8_decode」を実行したところ、ファイルは正しい名前で保存されましたが、現在は私のサイトでは奇妙に表示されているため、表示したいときにエンコードする必要があります.

とにかく、どこでも utf8_encode と utf8_decode を入力しなければならないことを回避するには??

他の人にとっては、この投稿が役立つかもしれません:無効な UTF-8 文字のユーザー入力を処理する方法は?

4

1 に答える 1

4

PHP ファイルシステム関数は、非 ASCII ファイル名をマングルすることが知られています。

すべての非 ASCII 文字を削除/変換することをお勧めします。それが不可能な場合は、utf8_[en/de]code.

無効な UTF-8 文字のユーザー入力を処理する方法も参照してください。.

于 2013-03-03T15:02:36.883 に答える