朋友的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.你在引用代码的时候先看清楚网页的字符代码,是否和你的模板以及版本的一致,不一致则需要转换字符编码,不可生搬硬套。
怎么查看字符编码,先安装火狐浏览器,点击浏览器的查看菜单下的字符编码,就可以看到。