Maison  >  Article  >  développement back-end  >  提交表单,$_post[XX]获得的数据为乱码

提交表单,$_post[XX]获得的数据为乱码

WBOY
WBOYoriginal
2016-06-23 14:09:351138parcourir

出现问题后,我按网上的说法
在index.php(提交表单的页面)前面加了
在page-1.php(要获取的页面)
加了  header("Content-Type:text/html;charset=GB2312");
  $key=$_POST['key']=iconv("UTF-8","gb2312",$_POST["key"]);  
结果还是不行。我是菜鸟咯,随便发表意见,反正把问题解决就行!


回复讨论(解决方案)

你的数据是页面输入的还是文件输入的?

你的数据是页面输入的还是文件输入的?
提交表单呀,从而来输入的呀!

index.php 首行加上
header("Content-Type:text/html;charset=GB2312");

另外,把php文件也设置为gbk编码

index.php 首行加上
header("Content-Type:text/html;charset=GB2312");

另外,把php文件也设置为gbk编码
弱弱问下,header("Content-Type:text/html;charset=GB2312");
 和这个"

header() 函数向客户端发送原始的 HTTP 报头。
 元素可提供有关页面的元信息

关于meta的介绍,我一下说不清楚,看下面的介绍吧
http://www.w3school.com.cn/tags/tag_meta.asp

在index.php(提交表单的页面)前面加了
如果这个 meta 生效的话,提交的表单就是 GB2312 编码的了
所以  在page-1.php(要获取的页面)
  $key=$_POST['key']=iconv("UTF-8","gb2312",$_POST["key"]);
是错误的!
你这是把 GB2312 当做 UTF-8 处理,怎么能得到正确的结果呢?  

header("Content-Type:text/html;charset=GB2312");
位于 http 协议头中,其优先级高于

在index.php(提交表单的页面)前面加了
如果这个 meta 生效的话,提交的表单就是 GB2312 编码的了
所以  在page-1.php(要获取的页面)
  $key=$_POST['key']=iconv("UTF-8","gb2312",$_POST["key"]);
是错误的!
你这是把 GB2312 当做 UTF-8 处理,怎么能得到正确的结果呢?  

header("Content-Type:text/html;charset=GB2312");
位于 http 协议头中,其优先级高于

既然index.php编码的方式为gb2312,就将page-1.php的编码前加上header("Content-Type:text/html;charset=GB2312");
可我这么一改,还是一样,对于这方面感觉太吃力了。

结果还是不行、还是一样....

什么叫“还是不行”、“还是一样”
到底是怎样的“不行”、怎样的“一样”

结果还是不行、还是一样....

什么叫“还是不行”、“还是一样”
到底是怎样的“不行”、怎样的“一样”

就是说$_post获得的变量数据仍旧是乱码(我单独输出了的)
版主,别介意呀,你可以随便说我的,但自己别生气咯,身体是自己的。本来计算机的,都是在花费着生命力。

贴出表单页 html 源代码

贴出表单页 html 源代码


header("Content-Type:text/html;charset=GB2312");
$link=mysql_connect("localhost","root","qidian110");
$key=$_POST['key'];
mysql_select_db("books",$link);
$query="SELECT * FROM book WHERE title='$key' or type='$key' or author='$key'";
$result=mysql_query($query);
echo "$key";
echo "






";

while($row = mysql_fetch_array($result))
  {
  echo "";
  echo "";
  echo "";
  echo "";
  echo "";
      echo "";
  }
?>

上面的是page-1.php。
下面是index.php















 

图书馆索引系统





  

  

  

  

  

  

 用户名:


    
  
  

  

  

  

 密码:


    
  
  

  
         
     
     
     
     
     
     
   
  

  

  

搜索


  

   







page-1.php 中在 header("Content-Type:text/html;charset=GB2312"); 下面加上
print_r($_POST);  

贴出结果

page-1.php 中在 header("Content-Type:text/html;charset=GB2312"); 下面加上
print_r($_POST);  

贴出结果
Array ( [use] => [pass] => [key] => ?????? )


如下图所示:

说下你的环境看看
另外,用什么浏览器测试的,其他浏览器测试什么情况。

说下你的环境看看
另外,用什么浏览器测试的,其他浏览器测试什么情况。
apache+php+mysql
用的ie 9 以及百度浏览器

header()前面不能有任何输出

header()前面不能有任何输出

说下你的环境看看
另外,用什么浏览器测试的,其他浏览器测试什么情况。

贴出表单页 html 源代码


麻烦大家了,昨天终于把这个问题解决了,编码方式我全部改成了"UTF-8",(因为mysql建表时,就是UTF-8).麻烦各位。我以后也定会注意每个页面的编码方式。

解决就好,知其然也要知其所以然,自己总结一下吧

其实每次传输过程都要考虑前后的编码问题,别忘了,编辑器打开php文件写代码也是一次传输过程,保存是另一次,按这样的思路,自己列出每一个传输过程再检查问题就变简单了,

统一编码就好,

用个好的编辑器也很重要,

推荐notepad++,想改编码,非常方便。

编号 书名 语言 作者 剩余数量
".$row['b_id']."".$row['title']."".$row['type']."".$row['author']."".$row['number']."
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn