Afficher un message
Vieux 10/06/2007, 12h33   #1
ownowl
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut charset et ajax (probleme d'accent)

bonjour à tous

j'ai un souci l'accent par ajax. je suis dessus depuis plusieurs jours
et ca commence à faire bien long.

en gros :
- j'ai une page php qui comporte un champ html input (dont l'id est test)
- pour les tests, je met dans le champ input par exemple le caractère "é"
- j'envoi au serveur le contenu de ce champ par un bouton submit et
le serveur me trouve la valeur asci 233 ce qui en iso-8859-1 est bien le
caractère "é" qui a été envoyé : normal
- j'envoi le contenu de ce champ par ajax, et là le serveur me détecte 2
caractères : 195 et 169 : pas mormal

j'ai positionné partout ou j'ai pu le charset iso-8859-1, à savoir :

- dans la page html, partie php
- dans le head de la page html
- dans le mode d'encodage de l'objet XMLHttpRequest
- dans le php.ini : default_charset = "iso-8859-1"
- dans le httpd.conf d'apache : AddDefaultCharset iso-8859-1

environnement
- Xp
- apache 2.0.59
- php 5.1.2

le problème est le même quelque soit le navigateur (IE5,6,7 firefox)

une idée ?

Olivier


le code dbtest3.php :

<?
header('Content-Type: text/html; charset=iso-8859-1');

function print_charset($chaine) {
$longueur=strlen($chaine);
for($i=0;$i<$longueur;$i++) {
$caractere=substr($chaine,$i,1);
error_log("code ascii test ".$caractere." ".ord($caractere));
}
}

print_charset($_POST['test']);
error_log('test ' . $_POST['test']);
error_log('test àvé accent');
?>

<script type="text/javascript">
<!--

function getXMLHttpRequest(){
var http_request = null;
if(window.XMLHttpRequest) {// Firefox et autres
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
// set type accordingly to anticipated content type
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
}
else if(window.ActiveXObject){ // Internet Explorer
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e1) {
http_request = null;
}
}
}
return http_request;
}

function go() {

var http_request = getXMLHttpRequest();
var txt = document.getElementById('test').value;

//var parameters = "test=" + encodeURI(txt);
var parameters = "test=" + txt;

http_request.onreadystatechange = function() {
if (http_request.readyState == 4) {
//alert(http_request.responseText);

}
}
http_request.open('POST', "dbtest3.php?nocache=" + Math.random(), true);
http_request.setRequestHeader("Content-type",
"application/x-www-form-urlencoded; charset=iso-8859-1");

http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
alert(parameters);
http_request.send(parameters);

}
-->
</script>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test à la con</title>
</head>

<body>

<a href="dbtest3.php">reload</a>
<br/>
<a href="javascript:void(go())">go</a>

<form name="form1" method="post" action="dbtest3.php">
<input name="test" type="text" id="test" maxlength="15" value="" />
<input name="" type="submit" value="Envoyer">
</form>

</body>
</html>
  Réponse avec citation
 
Page generated in 0,06127 seconds with 9 queries