熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

ajax+php中文亂碼的解決

2013-11-15 12:36:47  來源: PHP編程 

  由於XMLHTTP采用的是Unicode編碼上傳數據而一般頁面采用的是gb這就造成顯示頁面時產生亂碼而當在獲取頁面時的XMLHttp返回的是utf編碼這就造成了顯示產生亂碼
解決方法之一就是在PHP文件中顯示聲明為GB

  header("ContentType:text/html;charset=GB");

  而對於發送到服務器的中文進行轉碼
如下
$_POST["content"]=iconv("UTF""gb"$_POST["content"]);
因而這樣可以解決亂碼問題

  方法二是都采用UTF編碼這裡就不多說了

  附測試例程
客戶端

  <!DOCTYPE HTML PUBLIC "//WC//DTD HTML Transitional//EN">
<html>
<head>
<meta httpequiv="ContentType" content="text/html; charset=gb">
<title>ajax post test</title>
</head>
<body>
<div id="msg"></div>
<script language="javascript">
/**
* 初始化一個xmlhttp對象
*/
function InitAjax()
{
var ajax=false;
try {
ajax = new ActiveXObject("MsxmlXMLHTTP");
} catch (e) {
try {
ajax = new ActiveXObject("MicrosoftXMLHTTP");
} catch (E) {
ajax = false;
}
}
if (!ajax && typeof XMLHttpRequest!=undefined) {
ajax = new XMLHttpRequest();
}
return ajax;
}
//在form 測試頁面內有一個表單一個顯示的層
function sendData()
{
var msg=documentgetElementById("msg");
var f=documentform;
var c=fcontentvalue;
//接收數據的URL
var url="dispmsgphp";
var poststr="content="+c;
var ajax=InitAjax();
ajaxopen("POST"urltrue);
ajaxsetRequestHeader("ContentType""application/xwwwformurlencoded");
ajaxsend(poststr);
ajaxonreadystatechange=function(){
   if(ajaxreadyState== && ajaxstatus==){
   alert("I got something");
    msginnerHTML=ajaxresponseText;
   }
}
}

  </script>

  <form name=form>
<input type="text" name=content size=>
<input type="button" value="確定" onclick="sendData()"><!我用submit時就出錯>
</form>
</body>
</html>

  服務器端
<?php
header("ContentType:text/html;charset=GB");
if($_POST[content])
{
$_POST["content"]=iconv("UTF""gb"$_POST["content"]);
print("內容是"$_POST[content]);
}
else
{
print("沒有內容發送");
}
?>


From:http://tw.wingwit.com/Article/program/PHP/201311/21282.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.