关于乱码的解决办法 附带品牌广告:5元帮您解决问题、先解决后收费
首先说一下容易出现乱码的几种情况:
1.html页面编码不同所致乱码。 比如你的帝国是GBK的但是你页面的编码却设置的是UTF的。这种最容易出现。也很容易解决,出现乱码了一般大家都会先看页面charset编码。
---------------------------------------------------------------------------- 2.sql查询乱码
相信很多人都遇到过这种情况,分几点说一下。
2.1:首先。我们在帝国默认的文件中使用sql查询是没问题的。 例如我们在首页模板、列表模板。内容模板、自定义页面中使用sql查询是没任何问题,也不会出现乱码。这点不会出错。除非你在页头定义了 header设置了charset为不同编码,不过这样会出错的。
2.2:现在大家都知道了。在帝国的文件中使用sql或者其他一些php代码是没问题的。那么大家都可以想到出现问题的一般是我们的自定义php文件、post查询站外url返回的数据、xml文档的数据,一半都会出现乱码。 出现乱码的原因大家都知道就是编码问题,很多没有经验的新手或没接触过编码的朋友都会不明所以、运气好的百度一下胡乱找个方法就解决了,而运气不好的往往会坑你一天或者好几天时间。本屌丝昨晚就为了一个编码问题折腾了1个多小时。 给一个客户开发会员中心。都是自己写好的文档结果替换成php文件都出错了。。。。这里暂且不说。
..说说关于解决办法。
出现乱码就是编码问题:
1.你用记事本打开php文件并且编辑了,记事本有可能会将你的文档给自动转码。 1解决办法:打开记事本,上方文件->另存为-> 看到了吧,下面有个编码类型 编码的类型我就不解释了 自己百度一下。 你的文档是GBK的那么你另存为的时候选择 ANSI 如果是UTF的你就保存UTF。
关于1的说明:用DW新建和记事本重命名新建的.php文件 一般都是这样出现乱码的。通过1 绝对会解决你乱码的问题。如果解决不了本屌丝给你跪了。我Q2657534818随时帮你解决!
2:ajax-返回json、xml 、 post查询数据返回的数据集、 fopen打开的文件 . 请求远程文件有返回值的
有很少一部分的朋友是因为此点出现的乱码。在这一步出现乱码的朋友也许会难倒你很长时间。。。。本屌丝经常给卡客户用jquery的ajax或者post方法开发一些小插件经常出错。开始咱也不知道咋回事。。。。。
出现此类编码的朋友,首先你要确定一下。如果你查询的php文件是自己自定义的,并且就和我1说的建立.php文件的方法一样,那么你仔细看1的话应该会明白怎么回事了。...
还有一种就是通过远程访问url文件带返回值的。出现这类编码通常不是文档编码问题。而且数据在传输的时候被自动传成Unicode码了。那么你就需要转码了。 php请求返回数据的转码用
iconv(,,) 这个函数。
该函数有3个参数。
第一个为要转换的编码、第二个为转换后的编码、第三个为要转换的数据、 执行以后会返回一个新的变量。
下午帮客户写了一个归属地查询的函数。查询的财付通的接口返回的是xml 我遍历xml以后就乱码了。我是这样使用的大家可以参考下
while ($reader->read()) { //是否读取 if ($reader->nodeType == XMLReader::TEXT) { //判断node类型 $arr[]=$reader->value; //取得node的值 } } //转码 、 获取输出的时候是UTF的格式。 foreach($arr as $v) { $arr2[]=iconv("UTF-8","gb2312",$v); } //直接输入。如果想返回给一个字符串请用 return echo "<li><span>$arr2[7]</span><span>$arr2[6]</span><span>$arr2[10]</span></li>";
-----------------------------------------------------------
如果还有出现乱码的同学请Q我。
额.今天到此为止。今天早上8点才睡觉。。。11点就被客户吵起来做东西。。。
|