溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php生成文件名亂碼的解決方法

發布時間:2021-04-02 10:00:52 來源:億速云 閱讀:365 作者:小新 欄目:編程語言

這篇文章主要介紹php生成文件名亂碼的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

php生成文件名亂碼的解決辦法:1、將所有的+號替換為“%20”;2、添加“header("Content-type: application/vnd.ms-excel");”;3、刪除“filename=xxx”兩邊的空格。

PHP導出文件名亂碼解決

問題場景:

統計數據需要增加一個到處excel功能, 于是使用composer安裝了phpspreadsheet組件,進行數據處理并導出。遇到ASCII命名的文件名時, 都是導出一切正常, 但是遇到中文文件名時,導出的文件名是亂碼的。

此處直接貼出解決方案:

1. 文件名處理

因為PHP的urlencode函數會將各種空白字符轉碼為+號, 這個+號無論是chrome還是Firefox都是不會轉義的

所以此處將所有的+號再次替換為%20

$file_name = '導出文件.xls'; // 這是原本要導出的文件名
$encoded_filename = url_encode($file_name);// 將文件名進行urlencode轉碼
$encoded_filename = str_replace('+', '%20', $encoded_filename);

2. 頭文件:文件類型聲明

如果導出的是一個文件,不是確定的excel類型時,使用文件頭No.1

我導出的是一個excel下xls格式的表格,所以, 我使用的是文件頭No.2

// 文件頭No.1: 告訴瀏覽器這里要有一個文件流輸出
header("Content-type: application/octet-stream");
// 文件頭No.2: 告訴瀏覽器這里要輸出一個excel文件
header("Content-type: application/vnd.ms-excel");

頭文件: 下載文件名聲明

這一步是關鍵, 有兩個需要注意的地方

無論是filename=xxx還是filename*=xxx, 等號兩邊不要有空格

filename*=xxx, 這個配置項其實是由3部分組成的, 分別是字符集(utf8)、語言(空)和urlencode過的文件名, 其中, 語言是一個空字符串, 用單引號引起來, 三個部分之間不要有空格。

header('Content-Disposition: attachment; filename="foo-%c3%a4.xls"; filename*=UTF-8\'\'foo-%c3%a4.xls');

我采用如上代碼分別使用chrome, firefox, 360, ie11測試均運作良好。希望也能幫到你。

以上是“php生成文件名亂碼的解決方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女