php get要求中文乱码的处置惩罚办法:1、运用【$name = iconv("gbk","utf-8",$name);】要领处置惩罚乱码;2、经由过程【mb_convert_encoding($name, "utf-8", "gbk");】要领。
引荐:《PHP视频教程》
php吸收GET要领传入的中文参数乱码
近来写了个简朴的页面,从浏览器中传入中文参数(test.php?name=测试),不论怎么设置utf-8的页面中都显现乱码,google了一把也查到了不少处置惩罚办法,然则问题的缘由究竟是什么呢?没有人深入研究这个问题。出于猎奇便要好好查查究竟是什么缘由致使,也算涨点履历!
起首先来看下简朴的测试代码:
header("Content-Type:text/html;charset=UTF-8");
$name = $_GET['name'];
var_dump($name);
?>
测试效果以下:
代码中声清楚明了相应内容的编码为utf-8,显现的内容确切乱码。在这里请注意var_dump出变量的长度只要4 ,很显然,两个中文字的长度在utf-8编码下一定不止4个字节,然后我们再看一下Firefox的接见这个页面url
FireFox会自动将中文url编码,所以我们能够看到测试变成了%B2%E2%CA%D4,很明显,这里一个字是两个字节,是gb2313、gbk等中文编码花样,而不是utf-8编码。假如我们把页面的编码切换为gbk,中文参数就会显现一般,拜见下图
接下来我们做别的一个测试,代码以下:
header("Content-Type:text/html;charset=UTF-8");
$name = $_GET['name'];
var_dump($name);
?>
测试效果,一般显现:
那末,是什么致使这个问题的发作呢?
答案是浏览器默许编码在作祟,我们都用的是中文系统,浏览器默许的编码天然也会设置为本地化,比方我本身电脑上的IE和FireFox的默许编码都是gb系列的。
浏览器在要求用户输入的url 时会默许把url中的中文以默许的编码花样发送而不是以页面的编码花样发送,这就是为何页面中带有中文的链接一般而我们手动输入的链接
会乱码的缘由。同理,假如我们把浏览器的默许编码调解为utf-8,那末输入url中的中文则会根据utf-8编码。
除了上面的以外,另有以下状况会涌现这类状况:
假如gbk编码的页面生成的地点链接到utf-8的页面,gbk页面的中文是根据gbk的花样编码传送给下个页面,那末utf-8编码吸收后一定会涌现乱码。
IIS的url重写模块,重写后的中文编码也是gbk,假如你的页面是utf-8编码,那末重写参数将会失效。像这些状况,我们就需要运用php内置的转码函数来处置惩罚编码问题了:
计划1:
$name = iconv("gbk","utf-8",$name);
计划2:
mb_convert_encoding($name, "utf-8", "gbk");
以上就是php get要求涌现中文乱码怎么办的细致内容,更多请关注ki4网别的相干文章!
收藏 | 0