ホームページ  >  記事  >  バックエンド開発  >  PHPファイルをダウンロードすると中国語のファイル名が文字化けする

PHPファイルをダウンロードすると中国語のファイル名が文字化けする

墨辰丷
墨辰丷オリジナル
2018-06-05 17:04:004430ブラウズ

この記事では主にPHPファイルをダウンロードする際の中国語のファイル名が文字化けする問題を紹介しますので、興味のある方はぜひ参考にしてください。

PHPでは、ダウンロードするファイル名が中国語の場合、ファイルタイトルが文字化けします。

この時点で、タイトルをエンコードする必要があります。つまり、高度な URLencode を意味し、ヘッダーを挿入すると、問題は解決されます。

$filename = urlencode("下载文档");
header ( "Content-disposition: attachment; filename=$filename.xls" );

RFC2231 の定義では、多言語エンコーディングの Content-Disposition は次のように定義する必要があるとインターネットで言われています:

コードは次のとおりです:

Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html"

つまり:

An *
filename の後の等号の前に追加する必要があります
filename の値は次のとおりです。 一重引用符は、文字セット (utf8)、言語 (空)、および URL コード化されたファイル名の 3 つのセグメントに分割されます。

そのため、この時点で、ファイル名のURLエンコード変換を実行する必要があります。これは、phpのurlencodeを使用して簡単に行うことができます

$ua = _SERVER["HTTP_USER_AGENT"];
$filename = "中文 文件名.txt";
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);
header('Content-Type: application/octet-stream');
if (preg_match("/MSIE/", $ua)) {
  header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {
  header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
} else {
  header('Content-Disposition: attachment; filename="' . $filename . '"');
}

要約: 以上がこの記事の全内容です。皆様のお役に立てれば幸いです。学ぶ。

関連する推奨事項:

PHPのチェーン操作の原理と例の詳細な説明

PHPでAlipayの即時支払い機能にアクセスする方法

PHPを使用してmysqliデータベースを操作する方法

🎜

以上がPHPファイルをダウンロードすると中国語のファイル名が文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。