php接收GET方法传入的中文参数乱码问题
最近做PHP的webService服务器,发现用Get方法获取参数时获取到的参数时乱码。一番折腾后发现时浏览器本地语言的问题。 首先先来看下简单的测试代码: <? 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