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.简单修改配置文件,
问题就能够得到解决.
CKfinder中文乱码的解决.的更多相关文章
- Win 7英文系统显示中文乱码的解决(转)
Win 7英文系统显示中文乱码的解决http://www.enet.com.cn/article/2011/0811/A20110811896633.shtml 请点击Startmenu并点击Cont ...
- php 使用phpmailer 发送邮件(附带中文乱码的解决方法)
下载phpmailer ,在程序里包含class.phpmailer.php 类 ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...
- C#中WebClient使用DownloadString中文乱码的解决办法
原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient client= new We ...
- JSP的学习(4)——中文乱码的解决
本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...
- 详解get请求和post请求参数中文乱码的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...
- xShell终端中文乱码完全解决方法
xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种:(1)Linux系统的编码问题:(2)xShell终端的编码问题: (3)两端的语言编码不一致 ...
- Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧)
干货:Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧) [解决办法]: 菜单栏中[File]->[Reload As E ...
- js url传值中文乱码完美解决(JAVA)
js url传值中文乱码完美解决(JAVA) 首先在你的jsp页面这样更改: var url="你要传入的Action的位置&ipid="+ipid+"& ...
- IDEA使用maven构建时控制台中文乱码的解决办法
使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...
随机推荐
- JS的全局变量&局部变量
<script> var i=10; //全局变量 j = 20; //全局变量 function(){ var i=30; //局部变量 h = 40; //全局变量 } </sc ...
- css让图片居中显示在手机屏幕上
直接上代码了 <div class="showpic"> <span></span> <img src="" alt= ...
- POJ2485 最小生成树
问题:POJ2485 本题求解生成树最大边的最小值 分析: 首先证明生成树最大边的最小值即最小生成树的最大边. 假设:生成树最大边的最小值比最小生成树的最大边更小. 不妨设C为G的一个最小生成树,e是 ...
- 关于python的面向对象编程
先写上代码,有代码才好理解: #filename:classdemo.py class test: '''just person''' a=1 b=2 c=0 def __init__(self): ...
- information_schema.routines 学习
information_schema.routines 用户查看mysql中的routine信息 1.information_schema.routines 表中的常用列: 1.
- 认识元数据和IL(下)<第五篇>
书接上回: 第二十四回:认识元数据和IL(上) , 第二十五回:认识元数据和IL(中) 我们继续. 终于到了,说说元数据和IL在JIT编译时的角色了,虽然两个回合的铺垫未免铺张,但是却丝毫不为过,因为 ...
- OpenCV在ARM上的移植
OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...
- CXF之webservice
使用 CXF 做 webservice 简单例子 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这 ...
- JDBC官方用法
JDBC官方用法https://bitbucket.org/xerial/sqlite-jdbc/#markdown-header-usage 代码下载https://github.com/xeria ...
- actionInvocation
1.actionInvocation是什么 ActionInvocation就是Action的调用者.ActionInvocation在Action的执行过程中,负责Interceptor.Actio ...