首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

解決 FCKEditor/CKEditor 上傳中文文件名亂碼或失敗問題

     編輯:PHP 相關知識

問題根源

FCKEditor/CKEditor 核心代碼使用 UTF-8 編碼,而 Windows 服務器文件系統默認使用 GBK/GB2312,導致中文文件名在保存、讀取、顯示環節編碼不一致,產生亂碼或文件不存在錯誤。

方案一:文件名改為時間戳+擴展名(推薦,徹底避開編碼問題)

修改文件:editor/filemanager/connectors/php/commands.php

找到 $sExtension = strtolower($sExtension); 後添加:

$sFileName = time() . '.' . $sExtension; // 如 1700000000.jpg

優點:無編碼轉換、杜絕重名、跨平台兼容、安全性高(隱藏原始文件名)。

方案二:保留中文文件名,進行編碼轉換

修改文件:editor/filemanager/connectors/php/commands.php

找到 $sFileName = $oFile['name']; 後添加:

$sFileName = iconv('UTF-8', 'GBK', $sFileName); // Windows 環境
// Linux 環境通常無需轉換,文件系統支持 UTF-8

注意:需確保 PHP 安裝了 iconv 擴展(默認內置)。Linux 服務器建議直接使用方案一。

方案三:完整編碼鏈路修復(CKEditor 4.x)

除 commands.php 外,還需修改:

  1. util.php:ConvertToXmlAttribute 函數中輸出編碼轉換
    return iconv('GBK', 'UTF-8', htmlspecialchars($value));
  2. 連接器配置 config.php:設置 $Config['ForceSingleExtension'] = true; 等安全選項。

現代化建議

  • FCKEditor 已停止維護,**強烈建議遷移至 CKEditor 4/5** 或現代富文本編輯器(TinyMCE、Editor.js、Quill)。
  • 新版編輯器原生支持 UTF-8 文件名、圖片 Base64 嵌入、雲存儲集成,徹底解決編碼痛點。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved