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。如下:
<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。
在使用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。
注:對於問題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 < imgs.length; 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,修改如下:
<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>
② 在“浏覽服務器”頁面中上傳文件時
問題:在和①同樣的方式打開的“浏覽服務器”頁面中上傳中文名的文件時會出現亂碼。
解決:打開項目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目
總結,不管是jsp,php,asp教程.net出問題我們都需要分析如下
是的,是中文編碼問題,有兩個辦法可以解決
都需要改fck的相應文件源代碼
1 把中文名的字符串轉換編碼
2 重命名文件名為英文加數字
那個文件名我現在沒有看代碼忘了,而且版本不同好像略有差別,你研究一下應該可以找出來的