最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php get请求出现中文乱码怎么办

来源:动视网 责编:小采 时间:2020-11-02 18:26:50
文档

php get请求出现中文乱码怎么办

php get请求出现中文乱码怎么办:php get请求中文乱码的解决办法:1、使用【$name = iconv("gbk","utf-8",$name);】方法解决乱码;2、通过【mb_convert_encoding($name, "utf-8", "gbk");】方法。推荐:《PHP
推荐度:
导读php get请求出现中文乱码怎么办:php get请求中文乱码的解决办法:1、使用【$name = iconv("gbk","utf-8",$name);】方法解决乱码;2、通过【mb_convert_encoding($name, "utf-8", "gbk");】方法。推荐:《PHP


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了一把也查到了不少解决办法,但是问题的原因到底是什么呢?没有人深入研究这个问题。出于好奇便要好好查查到底是什么原因导致,也算涨点经验!

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

<?php 
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,中文参数就会显示正常,参见下图

接下来我们做另外一个测试,代码如下:

<?php 
header("Content-Type:text/html;charset=UTF-8"); 
$name = $_GET['name']; 
var_dump($name); 
?> 
 
<form method="GET"> 
<input name="name" /> 
<input type="submit" value="输入中文提交" /> 
</form>

测试结果,正常显示:

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

答案是浏览器默认编码在作怪,我们都用的是中文系统,浏览器默认的编码自然也会设置为本地化,例如我自己电脑上的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请求出现中文乱码怎么办

php get请求出现中文乱码怎么办:php get请求中文乱码的解决办法:1、使用【$name = iconv("gbk","utf-8",$name);】方法解决乱码;2、通过【mb_convert_encoding($name, "utf-8", "gbk");】方法。推荐:《PHP
推荐度:
标签: 乱码 中文 解决
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top