遇到一個dedecms亂碼的問題,查了好久的原因,原來是.htaccess配置的問題,現在把這個問題描述及解決方法列出,再總結幾個DEDECMS亂碼的問題.
朋友的dedecms亂碼,文件的編碼以及head里面的meta的編碼都是正確的,把生成的HTML下載到本地打開,也都是正常的,一放到服務器就亂碼.
經過更為細致的檢查,發現他在根目錄下的.htaccess里面配置了AddDefaultCharset UTF-8,這樣就會導致apache默認使用utf-8編碼向瀏覽器發送數據,客戶的dedecms是GBK編碼,所以自然就亂碼了,所以然還有人在.htaccess里面配置這個。。。下面在網上找到的資料:
首先,可以使用AddDefaultCharset off來關閉默認文件編碼,這樣apache服務器就不會在http應答消息頭部設置charset,只是設置Content-type: text/html. 而瀏覽器就會依靠html文件中設置的harset來決定編碼。
其次,腳本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把該行注釋掉,使php自動識別文件的編碼方式。
這樣不論你用什么編碼方式,只要test.php中的meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 與你test.php文件編碼方式相同,就不會產生亂碼問題。用戶提交數據的編碼瀏覽器提交的字符編碼由客戶端的characher encoding決定。
例如,當前瀏覽器的編碼是Gb2312,用戶提交數據后,無論apache設置的編碼方式是GB2312還是UTF-8,這時在服務器端接收到的仍是以Gb2312編碼的數據。
如果要在返回頁面上顯示用戶剛才提交的數據,而該頁面是用UTF-8編碼的或者要在數據庫中存儲的用戶提交的數據,而數據庫是UTF-8編碼的,那就要做字符轉換了。
dedecms織夢出現亂碼原因分析以及解決方法
我們在用dedecms織夢內容管理系統編輯網頁的時候,經常會莫名其妙的發現前臺網頁顯示亂碼了。而一時半會又查找不到任何原因。其實這往往這是因為dedecms織夢內容管理系統的字符編碼和網頁模板字符編碼不一致造成的。而和數據庫往往沒有任何的關系。
這很簡單,因為我們沒有修改過數據庫,而且是按照官網指導方式安裝的dedecms系統,數據庫不太可能出問題。亂碼是因為字符編碼不一致造成的,出現的原因有以下幾種:
你模板采用的字符編碼與你安裝的版本字符編碼不一致;比如你安裝的是UTF-8的dedecms系統,而制作的模板卻采用了默認的GBK1312的字符編碼,那么自然會亂碼。
你制作的多個模板有的編碼是UTF-8,有的是GBK1312,不亂才怪。
情況是以上二種情況同時存在,兼而有之,導致天下大亂。
解決辦法:
1.是建議安裝UTF-8版本的dedecms系統,因為國內大多數網站都是UTF8編碼的,你引用別處網頁代碼的時候,亂碼的幾率會更小些。
如何安裝UTF-8版本,可以查看我的博客,有關于這方面的詳細講解。
2.用dreamweaver制作模板的時候,選擇字符編碼為UTF-8,或者選擇和你安裝的版本一致的字符編碼。
3.如何選擇UTF8字符編碼,用dreamweaver打開網頁后,點擊菜單欄的修改》》頁面屬性 》》標題/編碼 》》uncoid(UTF-8)。
4.你在引用代碼的時候先看清楚網頁的字符代碼,是否和你的模板以及版本的一致,不一致則需要轉換字符編碼,不可生搬硬套。
新聞熱點
疑難解答