最近在写一个类似博客的系统,使用了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中文乱码的解决.相关推荐

  1. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

  2. PHP输出中文乱码的解决方法

    PHP输出中文乱码的解决方法 参考文章: (1)PHP输出中文乱码的解决方法 (2)https://www.cnblogs.com/cyun/p/4146131.html 备忘一下.

  3. 织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会)

    织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会) 参考文章: (1)织梦站内选择和文件管理器中文乱码的解决方法(utf8编码程序包才会) (2)https://www.cnblog ...

  4. linux命令框显示中文乱码_CentOS终端命令行显示中文乱码的解决方法

    这篇文章主要介绍了CentOS终端命令行显示中文乱码的解决方法,以及测试方法和缺少中文字体时的解决方法,需要的朋友可以参考下 安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方 ...

  5. asp.net ajax中文乱码的解决?2010-01-19 12:06

    asp.net ajax中文乱码的解决? 2010-01-19 12:06 以前没怎么仔细的研究过ajax,只是用到了就直接拿过来用,发现了问题再找解决方法.以下是我在找解决问题的过程中的一点小小的总 ...

  6. freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

  7. c php乱码,php分割GBK中文乱码的解决方法

    类似如下的字符串(GBK), explode不能得到正确结果: $result = explode("|", "滕华弢|海青"); 究其原因, 对于" ...

  8. js post中文乱码 php,AJAX之POST数据中文乱码如何解决

    本文主要和大家分享AJAX之POST数据中文乱码如何解决,前端使用encodeURI进行编码,希望能帮助到大家.var param = encodeURI(param); $.ajax({ url: ...

  9. php json encode中文乱码,php json_encode中文乱码如何解决

    php encode中文乱码的解决办法:首先打开相应的PHP文件:然后使用正则语句"preg_replace("#\\\u([0-9a-f]{4})#ie"," ...

  10. php过滤掉不乱码json,PHP JSON编码后,中文乱码的解决方式

    1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况! a.输出乱码 $testJSON=array('name'=>'中文字符串','value'=>'te ...

最新文章

  1. Pytorch - GPU ID 指定 pytorch gpu 指定
  2. python使用ctype中”OSError: [WinError 193] %1 不是有效的 Win32 应用程序“的解决办法
  3. 新建一个spyder窗口
  4. 逆袭之旅DAY17.东软实训.Oracle.存储过程
  5. springboot中aop的应用场景_自然语言处理工具包 HanLP在 Spring Boot中的应用
  6. spring mvc学习(55):简单异常处理二
  7. 关于 Intellij IDEA Ultimate Edition 14.1控制台中文乱码 解决
  8. 东芝复印机2303出现f070_东芝复印机维修代码大全
  9. 第7章 处理串行线路和帧中继连接故障
  10. FFmpeg源代码简单分析:avformat_find_stream_info()
  11. UnityParticle3:3x常用模块
  12. laravel-excel文档翻译笔记
  13. mac 发现 添加 连接 局域网内打印机
  14. 非官方浙江大学校园网认证客户端开发笔记(一)
  15. 77GHz毫米波雷达快速chirp信号技术(二):测速原理
  16. python csv模块安装_Python中CSV模块
  17. MT4单均线变色代码实例
  18. 四、Sails项目的Api文档——集成Swagger解决方案
  19. Eclipse版本号及各个版本区别
  20. 数据库中外键的作用以及和主键的区别

热门文章

  1. 如何在Mac上创建和引导Linux USB驱动器
  2. 浅谈跨平台框架 Flutter 的优势与结构 1
  3. Java多线程系列 基础篇04 线程中断
  4. 54.用环信实现聊天功能
  5. Java Socket编程基础实例
  6. Mac 系统如何修改python的IDLE默认模块导入路径。
  7. 华为Java开发编程最新军规,谁违反谁滚蛋!
  8. 假如你是架构师,你要做些什么
  9. 还在用Json-lib?面对疾风吧!
  10. Linux 下 4 种禁用 Root 登陆的方法,你掌握了哪几种呢?