首頁 後端開發 php教程 fckeditor 上传图片乱码的解决方法_PHP教程

fckeditor 上传图片乱码的解决方法_PHP教程

Jul 13, 2016 am 10:55 AM
php 上傳 中文 亂碼 使用 圖片 教學 方法 解決

php教程中文乱码

中文名乱码是因为:
FCKeditor使用UTF-8编码,
自己机子比如是Windows系统
文件名使用的是GBK编码,
在上传中需要,改下编码,从UTF-8到GBK


==>第一个思路,转码思路,要修改两个文件,第一个文件:
.fckeditoreditorfilemanagerconnectorsphpcommands.php 文件

里面有一个 FileUpload 函数:

move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
改为
move_uploaded_file( $oFile['tmp_name'], iconv("utf-8","gbk",$sFilePath) ) ;

----------

第二个文件:

.fckeditoreditorfilemanagerconnectorsphputil.php 文件

找到 ConvertToXmlAttribute 函数:

将:return ( utf8_encode( htmlspecialchars( $value ) ) ) ;

修改为:return iconv("GBK", "UTF-8", htmlspecialchars( $value ));

==>第二个思路,修改上传文件的名字:

需要修改如下:

在 .fckeditoreditorfilemanagerconnectorsphpcommands.php 文件中

找到 FileUpload 函数:将 $sFileName = $oFile['name'];

修改如下:

//--------------------------------------------------------------
   //修正上传文件中文乱码方法之二:(修改上传文件的名字)
   $sFileName = "sda.php";
   $sOriginalFileName = $sFileName;
   $sExtension = substr($sFileName, (strrpos($sFileName, '.') + 1));//找到扩展名
   $sExtension = strtolower($sExtension);
   $sFileName = date("YmdHis").rand(100, 200).".".$sExtension;
//--------------------------------------------------------------

个人认为第一种方法还是蛮好的!

 


java版

在使用FCKeditor2.4.3时若上传的图片或者flash的文件名为中文时,发现一下情况:
问题1:
当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中选择上传按钮,如果上传的文件名为中文时会出现乱码。
解决办法:
  把SimpleUploaderServlet.java做如下修改:
  找到该程序中DiskFileUpload upload = new DiskFileUpload(),然后在该行下面添加
  upload.setHeaderEncoding("UTF-8")
问题2:
  当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中使用浏览
服务器按钮上传中文文件时会出现乱码。
解决办法:
  和问题1的解决办法基本一样,只不过需要在ConnectorServlet.java中添加
upload.setHeaderEncoding("UTF-8")便可。
问题3:
  当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中点击浏览
服务器按钮,会弹出“浏览服务器”页面,如果想在该页面中使用Create New Folder按钮
来创建一个中文目录时,会出现中文目录乱码。
解决办法:
  web容器的编码要与FCKeditor默认的编码UTF-8一致,如果使用的是Tomcat,需修改
tomcat服务器中conf目录下的server.xml。如下: 
 

              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups教程="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
                  enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/>

其实就是在原来的基础上添加URIEncoding的属性值为utf-8。

在使用FCKeditor2.4.3时若上传的图片或者flash的文件名为中文时,发现一下情况:
问题1:
当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中选择上传按钮,如果上传的文件名为中文时会出现乱码。
解决办法:
   找到FCKeditor.java解压包中的src目录下SimpleUploaderServlet.java做如下修改:
   找到该程序中DiskFileUpload upload = new DiskFileUpload(),然后在该行下面添加
upload.setHeaderEncoding("UTF-8"),重新编译成class文件并利用WinRAR把该class文件
添加到FCKeditor-2.3.jar中相应的位置,然后覆盖你的web项目中原来的jar包便可。
问题2:
   当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中使用浏览
服务器按钮上传中文文件时会出现乱码。
解决办法:
   和问题1的解决办法基本一样,只不过需要在ConnectorServlet.java中添加
upload.setHeaderEncoding("UTF-8")便可。
问题3:
   当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中点击浏览
服务器按钮,会弹出“浏览服务器”页面,如果想在该页面中使用Create New Folder按钮
来创建一个中文目录时,会出现中文目录乱码。
解决办法:
   web容器的编码要与FCKeditor默认的编码UTF-8一致,如果使用的是Tomcat,需修改
tomcat服务器中conf目录下的server.xml。如下:
  

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
                   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/>

其实就是在原来的基础上添加URIEncoding的属性值为utf-8。
 注:对于问题3,这种解决办法不可取,最好不要去修改服务器的编码,否则会影响到服务器上其它的工程。解决这个编码的问题可以修改源代码或者从新编写一个类来处理。通过观察打开的上传浏览对话框可以找对对应的htm页面和负责处理上传文件名称的com.fredck.FCKeditor.uploader. ConnectorServlet这个类,然后找到对应的参数,转换编码便可。如:String

newFolderStr=request.getParameter("NewFolderName");

newFolderStr=new String(newFolderStr.getBytes("iso8859-1"),"utf-8");
=================================================================================

fckeditor如果大家搞定啦1!那一定想到他是没有提供删除功能的!!
以下是一段js,放在调用feckeditor的jsp教程页面
function FCKeditor_OnComplete( editorInstance )
{
editorInstance.Events.AttachEvent( 'OnBlur', onEditorBlur );
}

function onEditorBlur(){
var imgs = FCKeditorAPI.GetInstance('EditorDefault').EditorDocument.body.all.tags("img");
for(var i=0; i alert(imgs[i].src);

//这里你可以用一个隐匿域来接收这些路径信息
}
}
把这些路径信息放置于数据库教程是的一个字段,删除文档时一起删除,就可以解决图片存留问题
========================================================================================
避免上下滚动条的出现:


在fckconfig.js中加入下列2句:

FCKConfig.Plugins.Add(   'autogrow '   )   ;
FCKConfig.AutoGrowMax   =   4000   ;   //这是允许自动增长的最大高度限制

同时请确认fckeditoreditorpluginsautogrow有这个目录存在,没有的话到官网下载最新版FCK。


另外注意FCKConfig.PluginsPath的路径你设置对了没有。
===========================================================================

FCKConfig.PluginsPath   =   FCKConfig.BasePath   +   'plugins/ '   ;

这个是对的,系统默认的路径,FCK使用也没问题

就是不能自动调整高度
=============================================================================

FCKConfig.PluginsPath   =   FCKConfig.BasePath   +   'plugins/ '   ;


这是js里的语句。BasePath不是在这设的,是在php里调用FCK时设置的。

========================================================================
不行的话是不是你曾经改过FCK的源码。
你重新下载文件,只改动这2行测试一下就知道了。别的什么都不用改就可以实现你所说的要求。

FCKConfig.Plugins.Add(   'autogrow '   )   ;
FCKConfig.AutoGrowMax   =   4000   ;

 

问题二

FCKeditor中文乱码问题

在FCKeditor的使用中,主要有在3个地方会出现中文乱码:

① 在“浏览服务器”页面中创建新目录时

问题:当点击“插入/编辑图象”或“插入/编辑Flash”时,会弹出“图象属性”或“Flash属性”对话框,然后单击其中的“浏览服务器”按钮时,会打开“浏览服务器”的页面,在这个页面中创建中文名目录时会出现乱码。

解决:修改Web容器的字符编码。因为FCKeditor的默认字符编码是UTF-8,所以将Web容器的字符编码也修改成UTF-8。如果Web容器用的是Tomcat,打开文件%CATALINA_HOME%/conf/server.xml,修改如下:

    port="8080"  
    redirectPort="8443"  
    minSpareThreads="25"  
    connectionTimeout="60000"  
    connectionLinger="-1"  
    serverSoTimeout="0"  
    maxSpareThreads="75"  
    maxThreads="150"  
    tcpNoDelay="true"  
    maxHttpHeaderSize="8192"  
IEncoding="UTF-8">  
  
    port="8009"  
    redirectPort="8443"  
    protocol="AJP/1.3"  
IEncoding="UTF-8">  
  
 

② 在“浏览服务器”页面中上传文件时

问题:在和①同样的方式打开的“浏览服务器”页面中上传中文名的文件时会出现乱码。

解决:打开项目WebRoot中的文件/editor/filemanager/browser/default/frmupload.html,在head中加一个meta:

  
③ 在“图象属性”或“Flash属性”对话框中上传文件时

问题:当点击“插入/编辑图象”或“插入/编辑Flash”时,会弹出“图象属性”或“Flash属性”对话框,点击其中的“上传”选项卡,点击“浏览...”按钮,选择一个中文名的文件,再点击“发送到服务器上”按钮,上传后的文件名是乱码。

解决:修改FCKeditor.Java源代码。通过Eclipse修改源码然后重新打包成jar文件比较方便。在Eclipse里新建Web工程FCKeditor-java-2.3,这里要注意,因为FCKeditor.Java的WebRoot目录名是web,所以建议新建工程时,WebRoot目录名也命名为web。把FCKeditor.Java里的相应目录复制到工程下。在src里找到ConnectorServlet.java和SimpleUploaderServlet.java两个文件,分别在两个文件中找到DiskFileUpload upload = new DiskFileUpload();,在其后加入upload.setHeaderEncoding("utf-8");。然后把Tomcat安装目录下/server/lib里的catalina-ant.jar复制到项目的/WEB-INF/lib下。打开build.xml,修改property name="catalina.home"成Tomcat的安装目录。修改taskdef name="deploy"、taskdef name="list"、taskdef name="reload"、taskdef name="undeploy"如下:

taskdef name="deploy"   classname="org.apache.catalina.ant.DeployTask">  
      
  
  
      
  
  
      
  
  
      
  

然后在Eclipse的Outline窗口中运行Ant的dist,就会生成的新的FCKeditor-2.3.jar。将使用了FCKeditor的项目中的FCKeditor-2.3.jar替换成这个新的。

上传失败问题

这里不考虑服务器方的原因。首先检查web.xml中SimpleUploader这个Servlet的配置里,是否把参数enabled设为了false。

另外,FCKeditor会自动创建web.xml中SimpleUploader的参数baseDir指定的目录。当通过“浏览服务器”页面上传文件时,如果baseDir下没有相应的Image或Flash目录,FCKeditor会自动创建Image或Flash目录;但是当通过“上传”选项卡中的“发送到服务器上”按钮上传文件时,如果baseDir下没有相应的Image或Flash目录,FCKeditor就会报错,这时需要你手动在baseDir下新建Image或Flash目


总结,不管是jsp,php,asp教程.net出问题我们都需要分析如下

是的,是中文编码问题,有两个办法可以解决
都需要改fck的相应文件源代码
1 把中文名的字符串转换编码

2 重命名文件名为英文加数字


那个文件名我现在没有看代码忘了,而且版本不同好像略有差别,你研究一下应该可以找出来的

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632286.htmlTechArticlephp教程中文乱码 中文名乱码是因为: FCKeditor使用UTF-8编码, 自己机子比如是Windows系统 文件名使用的是GBK编码, 在上传中需要,改下编码,从UT...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles