我正在开发一个Web应用程序,它是PHP,HTML,Javascript,AJAX,JQuery中的代码。
它链接到MySQL数据库。
问题在于:
DataBase中的大部分文字都是法语,一些特殊字符如“é”,“ù”,“à”在我的页面上显示为 。
N.B。为了提供更多信息,如果我在我的应用程序中的表单上输入“é”,它会在我的数据库'Ã'中写入,如果我在我的数据库中插入'é',它会在我的应用程序中显示为 。
进一步的信息: 首先,'é'显示正确。但是在我有一个AJAX函数从DataBase刷新它然后它变成了
AJAX代码:
function getXMLHttpRequest()
{
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject)
{
if (window.ActiveXObject)
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
xhr = new XMLHttpRequest();
}
}
else
{
alert("Votre navigateur ne supporte pas le format des données en temps réel...");
return null;
}
return xhr;
}
function request()
{
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || shr.status == 0))
{
readData(xhr.responseXML);
}
};
xhr.open("POST", "handlingData.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(null);
}
function readData(Data)
{
var XMLtr = Data.getElementsByTagName('tr');
for(var i = 0; i < XMLtr.length; i++)
{
var HTMLtr = document.getElementById(XMLtr[i].getAttribute('id'));
if(HTMLtr != null)
{
var XMLtd = XMLtr[i].getElementsByTagName('td');
for(var e = 0; e < XMLtd.length; e++)
{
var HTMLtd = HTMLtr.cells[e];
var HTMLtdReplace = document.createElement('td');
HTMLtdReplace.setAttribute('id', XMLtd[e].getAttribute('id'));
var InnerHTML = document.createTextNode(XMLtd[e].getAttribute("value"));
HTMLtdReplace.appendChild(InnerHTML);
HTMLtr.replaceChild(HTMLtdReplace, HTMLtd);
}
}
}
}
代码的reste只是一个带PHP的简单HTML表:
<body onload="var int = self.setInterval(function(){request(readData);}, 1000);">
<div id="divWrapper">
<div id="divBgd">
<?php
if($_SESSION['User'] == null || !isset($_SESSION['User']))
{
header("Location: ../Index.php");
}
include("Header2.php");
include("Navigation.php");
include("divData.php");
echo "<div style='clear: both;'></br></div>";
echo "<div style='clear: both;'></br></div>";
?>
</div>
<div style='clear: both;'></br></div>
</div>
<div style='clear: both;'></br></div>
</body>
这是divData.php:
<div id="divData">
<table id="tblData" name="tblData">
<tr>
<th>Description</th>
<th>Données</th>
<th>Unitées</th>
<th>Dernière mise à jour</th>
</tr>
<?php
$cn = new cConnexion("127.0.0.1", "app_windows", "root", "jrt12345");
if($cn->DBConnexion())
{
$getData = $cn->Select("SELECT rtd_dateTime, rtd_tagId, rtd_value, tag_description, tag_units FROM realTimeData INNER JOIN tag ON tag.tag_id = realTimeData.rtd_tagId INNER JOIN plc ON plc.plc_id = tag.tag_plcId WHERE plc_id = ".$_SESSION['PLC']." AND tag_realTimeData = 1 AND tag_alarmeData = 0");
if($getData != null)
{
while($Data = $getData->fetch())
{
echo '<tr id="'.$Data['rtd_tagId'].'">';
echo '<td id="Description">'.$Data['tag_description'].'</td>';
echo '<td id="Value">'.$Data['rtd_value'].'</td>';
echo '<td id="Units">'.$Data['tag_units'].'</td>';
echo '<td id="Date">'.$Data['rtd_dateTime'].'</td>';
echo '</tr>';
}
}
}
?>
</table>
<a id="cmdRetour" href="Accueil.php">Accueil</a>
谢谢!
答案 0 :(得分:1)
尝试为AJAX请求设置charset:
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
您可以将“UTF-8”替换为您正在使用的特定字符集。
答案 1 :(得分:0)
在AJAX调用脚本中,不要“按原样”echo
响应,特别是如果您在HTML和数据库中使用不同的字符集。
将回复存储在$response
变量中并致电echo iconv($db_charset, $html_charset, $response);
以返回回复。