この記事では主に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 つのセグメントに分割されます。
$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 中国語 Web サイトの他の関連記事を参照してください。