ホームページ > バックエンド開発 > PHPの問題 > PHPでアップロードした中国語ファイルのファイル名が文字化けしている場合はどうすればよいですか?

PHPでアップロードした中国語ファイルのファイル名が文字化けしている場合はどうすればよいですか?

coldplay.xixi
リリース: 2023-03-02 18:00:01
オリジナル
3491 人が閲覧しました

php にアップロードされた中国語ファイルのファイル名が文字化けする問題の解決策: エンコーディングを統一するために、HTML ファイルの head タグの途中に関連するステートメントを追加します。コードは [

にアップロードされた中国語ファイルのファイル名が文字化けする問題の解決策php:

方法 1: 推測させてください、おそらく私のシステムでは中国語ファイルを作成するときに文字化けが発生するので、コードを書き直しました:

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/测试数据.txt");
ログイン後にコピー

The結果は文字化けせずに正常に作成されました。 .. つまり、システムの問題ではありません。

考えてみると、私の php ファイル自体は utf8 でエンコードされているため、

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/测试数据.txt");
ログイン後にコピー

このステートメントは次のようになります。 utf8 エンコードを使用し、以前にアップロードしたファイルを使用します。名前は明らかに utf8 でエンコードされていないため、ソース文字列自体が utf8 でエンコードされていないため、次のステートメントは明らかに間違っています。

iconv("UTF-8","gbk//TRANSLIT",$_FILES["file"]["name"]);
ログイン後にコピー

関数を使用して、次のエンコードを確認します。ソース文字列:

$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’,’gb2312’));2 echo $e;
ログイン後にコピー

結果は CP936、つまりソース文字列エンコーディングは GBK です。

試してみてください

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . iconv("gbk","UTF-8",$_FILES["file"]["name"]));
ログイン後にコピー

問題は解決し、文字化けはなくなりました。

方法 2: 実際には、別の解決策があります。それは、HTML ファイルの head タグの途中に

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ログイン後にコピー

を追加して、エンコーディングを維持することです。

#結論

  • iconv 関数を使用すると、アップロード時に中国語のファイル名が文字化けする問題を解決できます実際、iconv はエンコーディングの不一致によって引き起こされるさまざまな文字化けの問題を解決できます。

  • iconv 関数を使用するときは、エンコーディングがまだ決まっていない限り、最初にソース文字列のエンコーディングを確認してください。

  • すべてのコードのエンコーディングが一貫していることを確認し、最後の手段として iconv 関数を使用してください。サーバーに保存するファイル名に中国語のファイル名を使用しないで、ファイル名を自分のファイル名に変換してください (英語であってもファイル名も変換してください)。

  • #関連する学習に関する推奨事項:
  • PHP プログラミングの入門から熟練度まで

  • #

以上がPHPでアップロードした中国語ファイルのファイル名が文字化けしている場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート