[AJAX] AJAX et les accents
Bonjour.
Voici en gros mon probleme:
J'ai un textarea, dans lequel j'écrit de facon normal (donc avec des \n é à...), un bouton apercu qui affiche a droite dans un div ce que j'ai mis dans le textarea, (la pas de souci ca fonctionne bien). Et enfin un bouton sauver qui active une fonction AJAX et envoi le contenue du textarea.
Le gros probleme étant que les caractéres accentué ne passe pas bien:
"salut é à" , arrive "salut é Ã".
Bon aprés ca je le met dans une base de donnée mais bon je pense pas que ca soit le probleme.
Voici les codes:
JS:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
function apercu(){
var str=document.getElementById("texte").value;
document.getElementById("apercu").innerHTML = str.replace(/\n/g, "<br />");}
function sauver(table){
var xhr=null;
var data="";
var docXML
data = "texte="+document.getElementById("texte").value+"&table="+table;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("POST", "./php/sauver.php", true);
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
}}
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
xhr.send(data);
}
function init(table){
var xhr=null;
var data="";
var docXML
data = "table="+table;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("POST", "./php/initialise.php", true);
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
docXML= xhr.responseText;
document.getElementById("texte").value = docXML;
}}
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(data);
} |
PHP sauver.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
<?php
header('Content-Type: text/html; charset=ISO-8859-15');
require "./../../secure/config.php";
function convert($str){
$str=ereg_replace( "é", "é", $str);
return $str;
}
function modifier($str, $table){
require "./../../secure/config.php";
$dblink=mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db,$dblink);
$query = "SELECT texte FROM ".$table."";
$strback = mysql_query($query,$dblink) or die (mysql_error($dblink));
$row = mysql_fetch_array($strback, MYSQL_NUM);
$row[0]=addslashes($row[0]);
$str=convert(addslashes($str));
mysql_db_query($db, "UPDATE ".$table." SET texte='$str', texteback='$row[0]'");
echo 'sauvegarder!!';
echo $str;
}
$str=nl2br ($_POST['texte']);
$table=$_POST['table'];
echo $str;
modifier( $str, $table);
?> |
Comme vous pouvez le voir j'ai essayé de faire une convertion mais je pense que le probleme arrive avant, enfin entre les deux pages.
Enfin le html:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
<title>Document sans nom</title>
</head>
<script type="text/javascript" src="./admin.js" >
</script>
<body>
<table style="width: 1240px; border: 1px; border-color:#000000; background-color: #666666;">
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td > </td>
</tr>
<tr>
<td colspan="4" ><select id="table">
<option value="accueil">accueil</OPTION>
<option value="entreprise">entreprise</OPTION>
<option value="partenaires">partenaires</OPTION>
<option value="eau">eau</OPTION>
<option value="delais">delais</OPTION>
</select></td>
</tr>
<tr>
<td colspan="2" height="450px" > <TEXTAREA align="top" style=" vertical-align: top; top: 0px; height: 400px; width: 600px; background-color:#FFFFFF;" type="text" id="texte" name="texte" ></textarea><center><input type="button" value="initialiser" onclick="javascript:init(document.getElementById('table').value);" /><input type="button" value="apercue" onclick="javascript:apercu();" /><input type="button" value="sauver" onclick="javascript:sauver(document.getElementById('table').value);" /></center></td>
<td colspan="2" ><div style="height: 620px; width: 620px; background-color:#FFFFFF;" id="apercu" name="apercu"></div> </td>
</tr>
</table>
</body>
</html> |
J'ai aussi essayé de faire une convertion avant cela avec:
JS
Code:
1 2 3 4 5 6 7 8 9
|
function HTMLspecialhars(ch) {
ch = ch.replace(/é/g, "é")
ch = ch.replace(/è/g, "è")
ch = ch.replace(/à/g, "à")
ch = ch.replace(/ù/g, "ù")
return ch
} |
Mais au moment de l'envoi, le texte est coupé au 1er accent.