为什么PHP中GET值乱码?

网上搜索了半天,大部分童鞋文中写到的都是通过转码,具体方法如下:

header("Content-Type: text/html; charset=utf-8");
$str = trim($_GET['name']); 

//$str = iconv("GB2312","UTF-8",$str);
$str = mb_convert_encoding($str, "UTF-8", "GB2312");

echo $str;

问题还没解决咧,接下来看测试文字:

綿部なつみ

试问一下,GET传递值跟网页的编码有关系吗?

没关系,乱码是url传值产生的,而不是字体本身编码的问题。

header("Content-Type: text/html; charset=utf-8");
$str = trim($_GET['name']); 
$str=urlencode($str);
 
$str=urldecode($str);
echo $str;

GET传值之前用urlencode编码一下,传过去再用urldecode解码。

是什么导致这个问题的发生呢?

答案是浏览器默认编码在作怪,我们都用的是中文系统,浏览器默认的编码自然也会设置为本地化,例如我自己电脑上的IE的FireFox的默认编码都是gb系列的。

随机文章:

1、Magento通过SSH升级无错方法
https://www.onexin.net/magento-no-wrong-way-to-upgrade-by-ssh/

2、UCH日志增加系统分类技巧
https://www.onexin.net/increase-in-uch-log-taxonomy-coup/

3、PHP程序员如何突破成长瓶颈
https://www.onexin.net/php-programmers-how-to-break-bottlenecks-in-the-growth/

4、Mayday Oran-G(中韩对照)
https://www.onexin.net/mayday-oran-g-south-korea-control/

5、以图换字的几个方法及思路
https://www.onexin.net/figure-for-word-methods-and-ideas/

转载请注明出处:https://www.onexin.net/why-php-get-values-in-garbled/

Leave a Reply

Your email address will not be published. Required fields are marked *