php get 乱码问题,php get要求涌现中文乱码怎么办_后端开发

php get要求中文乱码的处置惩罚办法:1、运用【$name = iconv("gbk","utf-8",$name);】要领处置惩罚乱码;2、经由过程【mb_convert_encoding($name, "utf-8", "gbk");】要领。

aa4eaef2976e19529bcdbd122c401bdb.png

引荐:《PHP视频教程》

php吸收GET要领传入的中文参数乱码

近来写了个简朴的页面,从浏览器中传入中文参数(test.php?name=测试),不论怎么设置utf-8的页面中都显现乱码,google了一把也查到了不少处置惩罚办法,然则问题的缘由究竟是什么呢?没有人深入研究这个问题。出于猎奇便要好好查查究竟是什么缘由致使,也算涨点履历!

起首先来看下简朴的测试代码:

header("Content-Type:text/html;charset=UTF-8");

$name = $_GET['name'];

var_dump($name);

?>

测试效果以下:

252dfb870ee37159f0b4954aab1864c1.png

代码中声清楚明了相应内容的编码为utf-8,显现的内容确切乱码。在这里请注意var_dump出变量的长度只要4 ,很显然,两个中文字的长度在utf-8编码下一定不止4个字节,然后我们再看一下Firefox的接见这个页面url

a345724e8985cabf310f354556addddf.png

FireFox会自动将中文url编码,所以我们能够看到测试变成了%B2%E2%CA%D4,很明显,这里一个字是两个字节,是gb2313、gbk等中文编码花样,而不是utf-8编码。假如我们把页面的编码切换为gbk,中文参数就会显现一般,拜见下图

38da7323cab363c99b7810dcb8031dcf.png

接下来我们做别的一个测试,代码以下:

header("Content-Type:text/html;charset=UTF-8");

$name = $_GET['name'];

var_dump($name);

?>

测试效果,一般显现:

f061e6e5e557beef9d97db684f47fa5a.png

那末,是什么致使这个问题的发作呢?

答案是浏览器默许编码在作祟,我们都用的是中文系统,浏览器默许的编码天然也会设置为本地化,比方我本身电脑上的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值