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 服務器建議直接使用方案一。
除 commands.php 外,還需修改:
util.php:ConvertToXmlAttribute 函數中輸出編碼轉換return iconv('GBK', 'UTF-8', htmlspecialchars($value));config.php:設置 $Config['ForceSingleExtension'] = true; 等安全選項。