Ajax encodage

Smoking bird Messages postés 911 Statut Membre -  
Smoking bird Messages postés 911 Statut Membre -
Bonjour,

J'ajoute du AJAX à un backoffice, qui permet de voir comment s'affichera le contenu sur le site. Je passe par un textarea pour taper le texte, qui envoi la chaîne via javascript à un formulaire php qui traite la chaîne correctement et la renvoi mise en forme.

J'utilise un encodage iso-8859-1, que je précise dans le head de mon document, et que je rappelle au début de mon script php.

Il se trouve que sous IE et Firefox, ça fonctionne comme il faut de cette façon. Mais sous Opera, ça me remplace les é par des
é
dans la réponse AJAX.

Bien entendu, ce n'est pas acceptable. J'ai fais différents essais, passant notamment en UTF8, sans parvenir à un résultat potable, il y a toujours un navigateur qui se comporte différement des autres. Pour l'avoir expérimenté, je sais que pour ce genre de problème on peut obtenir un résultat semblable partout, mais je n'arrive pas à remettre cela en pratique.

Quelqu'un peut-il m'aider?

Cordialement,

Smoke

32 réponses

Smoking bird Messages postés 911 Statut Membre 58
 
	function outText($string){
		$string=trim(stripslashes($string));
		$string="<span>$string</span>";
		$string=preg_replace('#<br /><br />#','</span><span>',$string);
		preg_match_all('~\<span\>Adresse[\w\d\s\'\,\.\(\)\:\;\<\/\>\-\@\=éà]{0,500}\<\/span\>~iU',$string,$results);
			foreach($results as $chain){
				$rep=str_replace('<span>',"<span class='adress'>",$chain);
				$string=str_replace($chain,$rep,$string);
			}
		preg_match_all('~www\.[\w\d\-\.\?\&\/]{6,1000}~i',$string,$links);
			foreach($links[0] as $mark){
				$nextL="<a target='_blanck' href='http://$mark'>$mark</a> ";
				$string=str_replace($mark,$nextL,$string);
			}
		preg_match_all('~[\w\-\_\.]{1,40}\@[\w]{1,15}\.[\w\.]{1,10}~i',$string,$mails);
			foreach($mails[0] as $mail){
				$nextM="<a href='mailto:$mail'>$mail</a>";
				$string=str_replace($mail,$nextM,$string);
			}
		preg_match_all('~(\<img\ssrc\=\'picts\/([\w]{6}\.(?:jpg|png))\'\sclass\=\'(?:ctr|lft|rht)Img\'\/\>)~i',$string,$img);
			list($masque,$image,$fichier)=$img;
			foreach($fichier as $idF=>$file){
				if( !file_exists('../picts/'.$file) ){
					$string=str_replace($image[$idF],' ',$string);
				}elseif(file_exists("../picts/$files") ){
					$string=str_replace('picts/','../picts/',$string);
				}
			}
		return $string;
	}


voilà comment elle fonctionne, le texte provient d'un textarea, j'ai donc tenté ceci:
$string=$_GET['string'];
echo "<p class='seeer'>".utf8_decode(string::outText($string))."</p>";

sans succès :s
Pour les images, je pense que ce sera trop lourd à charger, pour les frames, je préfère éviter le plus possible, je trouve pas ça très propre ni très moderne comme technique^^
0
Smoking bird Messages postés 911 Statut Membre 58
 
J'ai remarqué que sous opera, où ça fonctionne comme il faut pour les accents, il interprètes les " différement. Ceux du texte de base, tapés probablement sur un clavier anglais, ne sont pas droits mais inclinés, et les miens sont droits, et corrigent l'erreur. Je pense que c'est un début de piste, ça me rappelle quelque chose mais je n'arrive pas à mettre le doigt dessus :s
0
PhP Messages postés 1774 Statut Membre 606
 
Bsr

Et avec ça ?

function getSeeer() {

	// Préparation des paramètres
	var parameters = new Object();
	parameters["string"] = document.getElementById('before').value.replace( /\n/g , "<br \/>" );;
					
	var queryString = '';
	for (var param in parameters)
	{
		if (queryString != '') queryString = queryString + '&';
		queryString = queryString + escape(param)+ '=' + escape(parameters[param]);
	}


	if(window.XMLHttpRequest)
		{
			var htr=new XMLHttpRequest();
		}
		
	if(window.ActiveXObject)
		{
			var htr=new ActiveXObject('Microsoft.XMLHTTP');
		}

	htr.open("GET",'seeer.php?'+queryString,false);
	htr.send("null");
	document.getElementById('seeer').innerHTML=htr.responseText;
	
}	

0
Smoking bird Messages postés 911 Statut Membre 58
 
Bonsoir PhP,

J'ai fait un simple copié-collé de ta fonction, ne comprennant pas tout ce qu'il y a dedans (suis une bille en javascript), et malgré cela ça ne change rien :s y'a toujours le problème d'affichage (réduction des caractères et remplacement par un '?') :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
P@t@ch0n Messages postés 603 Statut Membre 85
 
Pourquoi tu ne réponds pas à ma question ?
Une autre, tu développes avec quel éditeur/environnement de développement ?
0
PhP Messages postés 1774 Statut Membre 606
 
Hum oui Patachon a raison Tu utilises quels softs / librairies ?

De plus comment peux-tu utiliser AJAX si tu n'y connais rien en Javascript ? !!!!
0
Smoking bird Messages postés 911 Statut Membre 58
 
Patachon, quelle question? Il me semble t'avoir répondu, si ce n'est le cas, c'est que je ne l'ai pas vue (toutes mes excuses).

Je développe avec programmer's notepad 2, sur l'espace que j'ai chez celeonet, mon local ne fonctionnant plus depuis quelques temps. Je n'utilise aucune librairie externes ni aucun autre soft, c'est que du maison^^

Je m'y connais vraiment très peu en javascript, je fais quelques trucs de base, mais je ne suis clairement pas un expert, j'en ai conscience^^. Je n'utilise probablement pas un quart des capacités de javascript, c'est pour ça que j'dis ça^^, bien que j'utilise souvent ce langage (pour les mêmes choses)
0
P@t@ch0n Messages postés 603 Statut Membre 85
 
Je ne connais pas cet éditeur, mais à première vue, il a l'air correct.

Ma question était :
Je réitère, elle fait quoi au juste cette méthode ? D'où proviennent les données que tu retournes ?
Fichier (quel type) ? BDD ?
0
Smoking bird Messages postés 911 Statut Membre 58
 
il est très correct^^

Désolé, j'ai cru que tu voulais le code
Elle met en forme la chaîne récupérée du textarea comme elle sera une fois online, donc alinéa lettrines et tout le tuttim

Les données proviennent d'une bdd (myisam) et elles s'affichent dans un textarea
0
P@t@ch0n Messages postés 603 Statut Membre 85
 
La collation de ta table est en quoi ?

Il est étrange ton problème tout de même, je ne comprend pas trop pourquoi seul Opera interpréterait mal les données.
Tu as vidés les caches des navigateurs à chaque essais ?
0
Smoking bird Messages postés 911 Statut Membre 58
 
J'ai vidé les caches en effet :) et au contraire, il n'y a que Opera qui affiche les données correctement, les autres se plantent (ou alors opera se plante mais fait ce que j'veux qu'ils fassent tous et que les autres ne font pas, comment s'y retrouver)

C'est quoi la collation d'une table?(:
0
P@t@ch0n Messages postés 603 Statut Membre 85
 
La collation, pour simplifier, c'est l'encodage.
http://dev.mysql.com/doc/refman/5.0/fr/charset-mysql.html
0