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 < 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,修改如下:
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 重新命名檔案名稱為英文加數字
那個檔案名稱我現在沒有看代碼忘了,而且版本不同好像略有差別,你研究一下應該可以找出來的
http://www.bkjia.com/PHPjc/632286.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632286.htmlTechArticlephp教程中文亂碼 中文名亂碼是因為: FCKeditor使用UTF-8編碼, 自己機子比如是Windows系統 檔案名稱使用的是GBK編碼, 在上傳中需要,改下編碼,從UT...