js在php中文乱码解决办法浅析

来源:互联网 发布:淘宝子账号权限 编辑:程序博客网 时间:2024/05/22 10:36

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">

<title>ajax 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.resp****eText;

   }

}

}

</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("没有内容发送");

}

?>

原创粉丝点击