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

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="确定" οnclick="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("没有内容发送");

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值