PHP Ajax Jquery UTF8字符问题

时间:2016-01-25 07:47:46

标签: php jquery mysql ajax

我遇到了从php获取数据并使用ajax方法显示数据的问题。

我的主index1.php文件有div显示所有数据:

 <div  id="divPageData"> </div>

还有另一个tablepage.php,其中ajax调用脚本

function loadData()
 {
var dataString;
var search = $("input#fieldSearch").val();
var record = $("select#pageRecord").val();
var gender = $("select#fieldSearch1").val(); 
var colf = $("select#fieldcollege").val(); 
var deptf = $("select#fielddepartment").val();
var natf = $("select#fieldnationality").val();
var fstatusf = $("select#fieldfinalstatus").val();
var fyearf = $("select#fieldyear").val();   

dataString = '&name='+ search + '&gender=' + gender + '&colf=' + colf + '&deptf=' + deptf + '&natf=' + natf + '&fstatusf=' + fstatusf +  '&fyearf=' + fyearf +'&perpage=' + record;
//dataString = 'starting='+page+'&name='+search+'&gender='+ gender+'&perpage='+ record+'&random='+Math.random();

  $.ajax({
  url: "tablepage.php",
  type: "GET",
  data: dataString,
  success:function(data)
  {
    $('#divPageData').html(data);
  }
        });

对于php我使用

header('Content-Type: text/html; charset=utf-8');

以及我使用

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

对于mysql连接我使用

mysqli_set_charset($conn,"utf8");

和ajax我用

contentType: "application/x-www-form-urlencoded;charset=UTF-8",

并且所有数据都正确显示。甚至从mysql中获取数据。但是“divPageData”内的数据显示不正确(样本显示数据:هدىعبدآكريÙ...Ù......ØÙ...دب††Ø¹Ù”Ù‰)

screenshot

还有一件事:它在Mozila firefox中完美运行,但我在Google Chrome&amp; IE。

4 个答案:

答案 0 :(得分:0)

使用Jquery .serialize()

  

.serialize()方法以标准URL编码方式创建文本字符串   符号。它可以作用于已选择个体的jQuery对象   表单控件,例如<input><textarea><select> $(&#34;输入,   textarea,选择&#34; ).serialize();

dataString更改为 $( '#formid' ).serialize()

要在ajax

中的contentType下方存储阿拉伯数据
contentType: "application/x-www-form-urlencoded;charset=UTF-8",

Php file

header ('Content-Type: text/html; charset=UTF-8'); 

声明编码META标记,它会导致浏览器加载UTF-8字符集    在显示页面之前。

echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />'; 

答案 1 :(得分:0)

您正在使用哪种代码查看程序(notpad ++,sublime等)?我有一个问题,我以不同的鼓励方式保存我的php文件,也许你有同样的问题。

答案 2 :(得分:0)

可能你的MySqli数据库表还没有配置UTF-8 ??

答案 3 :(得分:0)

我能想到的3个理由

  1. tablepage.php页面顶部有一个BOM字符。详细了解here

  2. 没有为utf8正确配置这些数据的mysql表。

  3. 您对数据进行双重编码/解码。验证数据只有一个utf8转换。尝试删除php标头或ajax charset,看看会发生什么