Das Beispiel in diesem Artikel beschreibt die Lösung für den verstümmelten chinesischen Namen des PHP-Anhang-Downloads. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:
Wenn in PHP der Name der herunterzuladenden Datei chinesisch ist, wird der Dateititel verstümmelt.
Zu diesem Zeitpunkt müssen Sie den Titel codieren, was einen erweiterten URL-Code bedeutet, und ihn dann in den Header einfügen. Dann ist das Problem gelöst.
$filename = urlencode("下载文档"); header ( "Content-disposition: attachment; filename=$filename.xls" );
Online heißt es, dass in der Definition von RFC2231 die Inhaltsdisposition der mehrsprachigen Kodierung wie folgt definiert werden sollte:
Code kopierenDer Code lautet wie folgt:
Content-Disposition: filename*="utf8''test.html"
Nach Dateiname Dem Gleichheitszeichen muss ein * vorangestellt werden
Der Wert von Dateiname ist in drei Segmente mit einfachen Anführungszeichen unterteilt: Zeichensatz (utf8), Sprache (leer) und URL-codierter Dateiname .
Zu diesem Zeitpunkt sollte der Dateiname also URL-codiertkonvertiert werden. Dies kann einfach mit dem PHP-URL-Code
$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 . '"'); }
Das Obige stellt die Lösung für den verstümmelten chinesischen Namen des PHP-Anhang-Downloads vor, einschließlich der URL-Codierung. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.