PHPでファイルをアップロードするのは最も基本的な技術点ですが、さらに深く進むと、解決する必要がある問題がたくさんあります。ファイルを作成すると、ファイル名が文字化けしてしまいます。
以下は問題のコードです。非常に簡単です:
リーリー
「test data.txt」というファイルをアップロードしました、おお、ファイルはアップロードできましたが、ファイル名が文字化けしていました。
オンラインで解決策を検索し、
リーリー
が
に変更されました リーリー
iconv関数の戻り値がfalseであることが分かりました。
関数マニュアルを確認して、2 番目のパラメータが特別な使い方をしていることを確認してください。簡単な翻訳は私ですエンコーディングの後に //TRANSLIT または //IGNORE を追加できます。前者は、翻訳できない文字を最も近い文字に変換します。後者は、変換できない文字を単純に無視します。
試してみる:
リーリー結果:
リーリーつまり、漢字は変換できないし、近い文字も無いようです ネットで紹介されている方法は万能ではないようです。
推測させてください、おそらく私のシステムは中国語ファイルを作成するときに文字化けを引き起こすでしょう、それで私はコードを書き直しました:
リーリー結果は文字化けもなく、正常に作成されました。 。 。つまり、システムの問題ではありません。
考えてみてください、私のphpファイル自体はutf8でエンコードされています
リーリーこのステートメントは utf8 エンコードを使用する必要があるため、前にアップロードしたファイル名は utf8 エンコードであってはなりません。ソース文字列自体が utf8 エンコードではないため、次のステートメントは間違っているはずです:
リーリー関数を使用してソース文字列のエンコーディングを確認します:
リーリー結果はCP936、つまりソース文字列エンコーディングはGBKです。
試してみる
リーリー問題は解決し、文字化けはなくなりました
実際には、HTML ファイルの head タグの途中に
を追加するという別の解決策があります。 リーリーしたがって、エンコーディングは統一されたままであり、トランスコードする必要はもうありません