首页  >  文章  >  后端开发  >  提交表单,$_post[XX]取得的数据为乱码

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

WBOY
WBOY原创
2016-06-13 12:26:071007浏览

提交表单,$_post[XX]获得的数据为乱码
出现问题后,我按网上的说法
在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编码
------解决思路----------------------
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 协议头中,其优先级高于


------解决思路----------------------
结果还是不行、还是一样....

什么叫“还是不行”、“还是一样”
到底是怎样的“不行”、怎样的“一样”
------解决思路----------------------
header()前面不能有任何输出
------解决思路----------------------
解决就好,知其然也要知其所以然,自己总结一下吧

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

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn