为什么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系列的。

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

随机文章:

1、升级Discuz!X X2后我们可以设置的优化(网站加速)
https://www.onexin.net/upgrade-discuz-x-x2-later-we-can-set-the-optimization-website-acceleration/

2、搜索引擎营销常用术语
https://www.onexin.net/search-engine-marketing-terminology-commonly-used/

3、CSS 缩写减少你CSS样式表文件的大小
https://www.onexin.net/css-abbreviation-reduce-your-css-style-sheet-file-size/

4、tinymce最快速写作
https://www.onexin.net/tinymce-fastest-writing/

5、如何让搜索引擎抓取AJAX内容?
https://www.onexin.net/how-to-get-search-engines-to-crawl-ajax-content/

Leave a Reply