最近在写一个类似博客的系统,使用了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.简单修改配置文件,

问题就能够得到解决.

CKfinder中文乱码的解决.的更多相关文章

  1. Win 7英文系统显示中文乱码的解决(转)

    Win 7英文系统显示中文乱码的解决http://www.enet.com.cn/article/2011/0811/A20110811896633.shtml 请点击Startmenu并点击Cont ...

  2. php 使用phpmailer 发送邮件(附带中文乱码的解决方法)

    下载phpmailer ,在程序里包含class.phpmailer.php 类  ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...

  3. C#中WebClient使用DownloadString中文乱码的解决办法

    原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient client= new We ...

  4. JSP的学习(4)——中文乱码的解决

    本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...

  5. 详解get请求和post请求参数中文乱码的解决办法

    首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...

  6. xShell终端中文乱码完全解决方法

    xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种:(1)Linux系统的编码问题:(2)xShell终端的编码问题: (3)两端的语言编码不一致 ...

  7. Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧)

    干货:Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧) [解决办法]: 菜单栏中[File]->[Reload As E ...

  8. js url传值中文乱码完美解决(JAVA)

    js url传值中文乱码完美解决(JAVA) 首先在你的jsp页面这样更改: var url="你要传入的Action的位置&ipid="+ipid+"& ...

  9. IDEA使用maven构建时控制台中文乱码的解决办法

    使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...

随机推荐

  1. 单机/伪分布式Hadoop2.4.1安装文档

    转载自官方文档,最新版请见:http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/SingleCluster.h ...

  2. 网关协议学习:CGI、FastCGI、WSGI、uWSGI

    一直对这四者的概念和区别很模糊,现在就特意梳理一下它们的关系与区别. CGI CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的 ...

  3. 异常处理与调试3 - 零基础入门学习Delphi52

    异常处理与调试3 让编程改变世界 Change the world by program 两种结构的嵌套 要在一个过程里同时实现处理异常和保护资源分配,关键要保证"try-except&qu ...

  4. Network Saboteur(搜索)

    Network Saboteur POJ2531 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10351   Accept ...

  5. C++----练习--while求和

    1.完成1+2+3+...+99+100 #include<iostream> int main() { std::cout<<"本程序完成1 + 2 + 3 ... ...

  6. SWFUpload批量上传插件

    SWFUpload是一个批量上传插件,在HTML4.1里面,估计也只有Flash+javascript配合才能够做到了.先复制个重要的网址,这个应该是官方的文档了,相当齐全. http://leeon ...

  7. scheme 模拟queue

    [code 1] shows a implementation of queue. The function enqueue! returns a queue in that the obj is a ...

  8. 动态创建和移除HTML标签

    1.w3school定义 添加新内容的四个 jQuery 方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插 ...

  9. iphone 6s pp助手 越狱

    https://www.apple.com/iphone-6/合适初高中学习英语http://www.travelchinaguide.comhttp://jailbreak.25pp.com/ ip ...

  10. 利用FreeMarker静态化网页

    1.介绍-FreeMarker是什么 模板引擎:一种基于模板的.用来生成输出文本的通用工具 基于Java的开发包和类库 2.介绍-FreeMarker能做什么 MVC框架中的View层组件 Html页 ...