ajax+php中文乱码解决办法

2016-02-19 12:26 20 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享ajax+php中文乱码解决办法教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - Web开发 】

AJAX的乱码的出现在的原因
由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码。而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码。
解决方法之一就是在PHP文件中显示声明为GB2312

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

而对于发送到服务器的中文进行转码。
如下
$_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);
因而这样可以解决乱码问题

方法二,是都采用UTF-8编码。这里就不多说了

附测试例程
客户端


!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
html
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
titleajax post test/title 
/head
body
div id="msg"/div
script language="javascript"
/**
* 初始化一个xmlhttp对象
*/
function InitAjax()
{
 var ajax=false; 
 try { 
  ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
 } catch (e) { 
  try { 
   ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
  } catch (E) { 
   ajax = false; 
  } 
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') { 
  ajax = new XMLHttpRequest(); 
 } 
 return ajax;
}
//在form 测试页面内有一个表单,一个显示的层
function sendData()
{
 var msg=document.getElementById("msg");
 var f=document.form1;
 var c=f.content.value;
 //接收数据的URL
 var url="dispmsg.php";
 var poststr="content="+c;
 var ajax=InitAjax();
 ajax.open("POST",url,true);
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 ajax.send(poststr);
 ajax.onreadystatechange=function(){
  if(ajax.readyState==4 && ajax.status==200){
  alert("I got something");
   msg.innerHTML=ajax.responseText;
  }
 }
}

/script

form name='form1'
input type="text" name='content' size=10
input type="button" value="确定" onclick="sendData()"!--我用submit时就出错--
/form
/body
/html



 

服务器端
?php
header("Content-Type:text/html;charset=GB2312");
if($_POST['content'])
{
 $_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);
 print("内容是".$_POST['content']);
}
else
{
 print("没有内容发送");
}
?

引用自:http://www.blogjava.net/huyi2006/articles/86154.html

来源:http://www.tulaoshi.com/n/20160219/1600905.html

延伸阅读
标签: PHP
  在使用 PHP 5 中,通过 MySQL 查询得到的值全部成为 '???????',原来是字符集设错了。 我在安装 MySQL 5 时,已经选择默认字符集为 gb2312,但还是返回乱码,解决的办法是在连接 MySQL 服务器后,调用一个与所设字符集相同的 "set names X" 语句(X 为你所设的字符集)。下面是我的连接函数: function sql_connect() {  global ...
标签: Web开发
Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作。 首先我们来了解怎么在javascript中创建这个对象: varxmlHttp=newXMLHttpRequest(); 这行简单的代码在 Mozilla、Fire...
标签: excel
Excel出现乱码的解决办法   1:Excel 打开一个csv格式的文档,出现乱码 2:有乱码的 CSV 档透过记事本的方式开启 3:用记事本打开后,开到的也是一堆乱码,单击档案---另存为 4:在弹出的保存对话框中选择ANSI"格式 5:设置完成,将文件保存再用excel 打开。可以看到,文档能够正常的显示了 ...
标签: Web开发
因AJAX接受数据时服务器默认是采用UTF-8的编码形式进行传送,所以在很多GB2312中文网页中应用AJAX回传数据经常会发生中文乱码。 解决AJAX中文回传乱码,其实就是将在服务器端文件加一个HEADER,指明送出的是什么编码流。比如 ASP文档就是在头部增加一行说明: Response.Charset("GB2312") PHP的示例如下: ...
标签: Web开发
网上搜索结合自己开发过程中遇到的情况,整理一下,以备忘: Ajax表单提交数据出现乱码和解决办法    //要传递的参数    var queryString = "firstName=" + firstName + "&lastName=" + lastName                   &nb...

经验教程

396

收藏

88
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部