FCKeditor中文亂碼解決辦法
在使用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。以下:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/>
其實就是在原來的基礎上添加URIEncoding的屬性值爲utf-8。
html
網上不少文章都說修改/editor/filemanager/browser/default/frmupload.html,在head中加一個meta
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ,其實憑這個根本不行。
解決這個問題得益於:http://gemini.javaeye.com/blog/135858,在這裏謝謝這篇文章的做者。 java
/////////////////////////////////////////////////////////////////////////web
查看文章
FCKeditor中文亂碼及上傳失敗問題2008-02-28 11:59FCKeditor中文亂碼問題apache
在FCKeditor的使用中,主要有在3個地方會出現中文亂碼:tomcat
① 在「瀏覽服務器」頁面中建立新目錄時服務器
問題:當點擊「插入/編輯圖象」或「插入/編輯Flash」時,會彈出「圖象屬性」或「Flash屬性」對話框,而後單擊其中的「瀏覽服務器」按鈕時,會打開「瀏覽服務器」的頁面,在這個頁面中建立中文名目錄時會出現亂碼。tcp
解決:修改Web容器的字符編碼。由於FCKeditor的默認字符編碼是UTF-8,因此將Web容器的字符編碼也修改爲UTF-8。若是Web容器用的是Tomcat,打開文件%CATALINA_HOME%/conf/server.xml,修改以下:ide
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="60000"
connectionLinger="-1"
serverSoTimeout="0"
maxSpareThreads="75"
maxThreads="150"
tcpNoDelay="true"
maxHttpHeaderSize="8192"
IEncoding="UTF-8">
</Connector>
<Connector
port="8009"
redirectPort="8443"
protocol="AJP/1.3"
IEncoding="UTF-8">
</Connector> ui
② 在「瀏覽服務器」頁面中上傳文件時編碼
問題:在和①一樣的方式打開的「瀏覽服務器」頁面中上傳中文名的文件時會出現亂碼。
解決:打開項目WebRoot中的文件/editor/filemanager/browser/default/frmupload.html,在head中加一個meta:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
③ 在「圖象屬性」或「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">
<classpath refid="compile.classpath"></classpath>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="compile.classpath"></classpath>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="compile.classpath"></classpath>
</taskdef>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
<classpath refid="compile.classpath"></classpath>
</taskdef>
而後在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目錄。