CKfinder中文乱码的解决.
最近在写一个类似博客的系统,使用了ckeditor和ckfinder,但是发现ckfinder在上传中文文件名的文件过程中会出现中文乱码的情况.
于是百度google乎,发现大多数的解决办法都是将文件名称命名成时间.但可是可但是,我是一名地道的中国人啊,为啥不行让我使用中文的文件名.
研究下ckfinder.
在core/connector/php/php5/CommandHandler/FileUpload.php内发现..大概53行左右.
if (!isset($uploadedFile['name'])) {$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID);}$sUnsafeFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));
//这行是调用了CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding方法,转换了
//名称,网上多数的方法是将这个名字变成日期命名.$sFileName = CKFinder_Connector_Utils_FileSystem::secureFileName($sUnsafeFileName);
然后我试图改变这里的文件编码.
增加了$uploadedFile['name'] = iconv(“utf-8″,”gbk”, $uploadedFile['name']);
但是发现这样会导致上传的文件名称是正确的,但是在ckfinder里面显示的文件名称是错误的.
于是乎去看这个convertToFilesystemEncoding方法,这个方法在,core\connector\php\php5\Utils\FileSystem.php中
404-427行,
public static function convertToConnectorEncoding($fileName){$_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");$encoding = $_config->getFilesystemEncoding();if (is_null($encoding) || strcasecmp($encoding, "UTF-8") == 0 || strcasecmp($encoding, "UTF8") == 0) {return $fileName; }if (!function_exists("iconv")) {if (strcasecmp($encoding, "ISO-8859-1") == 0 || strcasecmp($encoding, "ISO8859-1") == 0 || strcasecmp($encoding, "Latin1") == 0) {return utf8_encode($fileName);} else {return $fileName;}}$converted = @iconv($encoding, "UTF-8", $fileName);if ($converted === false) {return $fileName;}return $converted;}
函数大概的意思是 首先拿到配置文件里面配置的当前系统编码.
如果设置的为utf8 那么直接输出,如果设置的是ISO-8859-1,编码后输出,如果设置的是其他的编码,那么通过iconv函数转换后输出.
打开配置文件,根目录下的config.php.找到这个配置选项.大概在258行.将原始的utf-8改成gbk(简体中文window7系统.),中文乱码问题顺利解决.
这个配置到底应该怎么配置.取决于你当前系统对中文文件名称的编码.默认的windows系统应该是gbk,如果是linux系统.在没设置的情况下是utf8 也有可能设置成了gbk.简单修改配置文件,
问题就能够得到解决.
转载于:https://www.cnblogs.com/swordphp/p/3740983.html
CKfinder中文乱码的解决.相关推荐
- ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题
确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...
- PHP输出中文乱码的解决方法
PHP输出中文乱码的解决方法 参考文章: (1)PHP输出中文乱码的解决方法 (2)https://www.cnblogs.com/cyun/p/4146131.html 备忘一下.
- 织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会)
织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会) 参考文章: (1)织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会) (2)https://www.cnblog ...
- linux命令框显示中文乱码_CentOS终端命令行显示中文乱码的解决方法
这篇文章主要介绍了CentOS终端命令行显示中文乱码的解决方法,以及测试方法和缺少中文字体时的解决方法,需要的朋友可以参考下 安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方 ...
- asp.net ajax中文乱码的解决?2010-01-19 12:06
asp.net ajax中文乱码的解决? 2010-01-19 12:06 以前没怎么仔细的研究过ajax,只是用到了就直接拿过来用,发现了问题再找解决方法.以下是我在找解决问题的过程中的一点小小的总 ...
- freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法
PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...
- c php乱码,php分割GBK中文乱码的解决方法
类似如下的字符串(GBK), explode不能得到正确结果: $result = explode("|", "滕华弢|海青"); 究其原因, 对于" ...
- js post中文乱码 php,AJAX之POST数据中文乱码如何解决
本文主要和大家分享AJAX之POST数据中文乱码如何解决,前端使用encodeURI进行编码,希望能帮助到大家.var param = encodeURI(param); $.ajax({ url: ...
- php json encode中文乱码,php json_encode中文乱码如何解决
php encode中文乱码的解决办法:首先打开相应的PHP文件:然后使用正则语句"preg_replace("#\\\u([0-9a-f]{4})#ie"," ...
- php过滤掉不乱码json,PHP JSON编码后,中文乱码的解决方式
1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况! a.输出乱码 $testJSON=array('name'=>'中文字符串','value'=>'te ...
最新文章
- Pytorch - GPU ID 指定 pytorch gpu 指定
- python使用ctype中”OSError: [WinError 193] %1 不是有效的 Win32 应用程序“的解决办法
- 新建一个spyder窗口
- 逆袭之旅DAY17.东软实训.Oracle.存储过程
- springboot中aop的应用场景_自然语言处理工具包 HanLP在 Spring Boot中的应用
- spring mvc学习(55):简单异常处理二
- 关于 Intellij IDEA Ultimate Edition 14.1控制台中文乱码 解决
- 东芝复印机2303出现f070_东芝复印机维修代码大全
- 第7章 处理串行线路和帧中继连接故障
- FFmpeg源代码简单分析:avformat_find_stream_info()
- UnityParticle3:3x常用模块
- laravel-excel文档翻译笔记
- mac 发现 添加 连接 局域网内打印机
- 非官方浙江大学校园网认证客户端开发笔记(一)
- 77GHz毫米波雷达快速chirp信号技术(二):测速原理
- python csv模块安装_Python中CSV模块
- MT4单均线变色代码实例
- 四、Sails项目的Api文档——集成Swagger解决方案
- Eclipse版本号及各个版本区别
- 数据库中外键的作用以及和主键的区别