-ZN- Posté 12 Mai 2008 Posté 12 Mai 2008 Bonjour, j'ai un problème un peu embetant... je dois loader le contenu d'un fichier pour remplir le contenu d'un textarea. Si je fais ça en php tout simple, aucun problème ... le truc, c'est que je dois faire ça en ajax, car selon la valeur d'une variable (sélectionnée par l'utilisateur) un peu plus haut dans ma page, on charge un fichier différent. Et ça ne passe pas bien du tout dès que j'ai des accents ... si j'ai des accents dans mes fichiers à charger, mon textarea est plein de �. Si je remplace mes accents par leur code html, ça fonctionne, mais le textarea n'est pas lisible par les utilisateurs du site, ce qui est assez embetant est ce que quelqu'un aurait une solution? j'ai cherché des topics équivalents mais je n'ai pas trouvé ce que je cherchais. merci d'avance pour votre aide, ZN
Ifmy Posté 12 Mai 2008 Posté 12 Mai 2008 Bonjour Encore et toujours le problème de l'encodage. L'encodage et le charset de vos pages doivent être identiques. Quant à l'ajax faites un header en php dans la page appelé pour forcer le charset ça devrait fonctionner
-ZN- Posté 12 Mai 2008 Auteur Posté 12 Mai 2008 L'encodage et le charset de vos pages doivent être identiques. Quant à l'ajax faites un header en php dans la page appelé pour forcer le charset ça devrait fonctionner merci pour votre réponse. Ma page html est en charset=iso-8859-1 , et je charge le contenu d'un fichier txt tout simple ... Je ne vois pas ce que vous voulez dire par "faites un header en php", pouvez-vous s'il vous plait être plus précis? un exemple peut-etre?
Ifmy Posté 12 Mai 2008 Posté 12 Mai 2008 C'est normal dans votre cas éèçà... c'est de l'utf-8 et non de l'iso é en iso doit être écrit é
Bovino Posté 12 Mai 2008 Posté 12 Mai 2008 Il est possible de spécifier le type d'encodage de ta requète : tonObjetXmlHTTPRequest.setRequestHeader("Content-Type", "text/plain;charset=iso-8859-1");
-ZN- Posté 12 Mai 2008 Auteur Posté 12 Mai 2008 Un code comme ça devrait fonctionner? xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8'); (ça passe pas j'ai toujours les caracteres bizarres) merci pour vos reponses
-ZN- Posté 13 Mai 2008 Auteur Posté 13 Mai 2008 J'ai testé, ça ne change rien pareil avec le charset de ma page égal à iso-8859-1 et mon xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=iso-8859-1'); je n'y comprends rien...
Bovino Posté 13 Mai 2008 Posté 13 Mai 2008 C'est normal, si tu précises que tu récupères un urlencoded, les caractères accentués sont transformés en %Hexa. Essaye en précisant plutôt text/plain et utf-8. Ca devrait fonctionner... L'idéal étant comme souvent de ne pas mettre d'espaces ni d'accents dans les noms de fichiers, ça pose toujours des problèmes surtout si on associe le html, le js, le php etc...
-ZN- Posté 13 Mai 2008 Auteur Posté 13 Mai 2008 heu comme je débute je m'en sors pas facilement ... quand j'envoie xhr.setRequestHeader("Content-Type", "text/plain;charset=utf-8"); mon script ne fonctionne meme plus. cette ligne fonctionne xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); mais j'ai le probleme sur tous les caractères spéciaux toujours perdu ...
Bovino Posté 13 Mai 2008 Posté 13 Mai 2008 Effectivement, text/plain n'est pas accepté, tu peux essayer avec text/html, si ça passe toujours pas, utilise cette autre méthode de xmlhttprequest : xhr.setRequestHeader("Content-Transfer-Encoding", "utf-8"); Par contre, je ne suis pas certain de la syntaxe...
Ifmy Posté 14 Mai 2008 Posté 14 Mai 2008 N'importe quoi ... setRequestHeader C'est l'entête qu'on envoie et non qu'on réceptionne. Je pensais que c'était clair l'eau et l'huile ne ce mélangent pas. Bon je vous donne une astuce simple. Quand on vois des ? sur sa page comme montré plus haut. La page est en ISO, le contenu en UTF-8 Quand on vois des ©etc... La page est en UTF-8 et le contenu en ISO Donc : Soit vous encodé vos caractères "exotiques" comme je vous en ai fais l'exemple plus haut. Soit vous passer vos page en UTF-8 (meilleur choix de pérennité) et de toute façon évitez les .txt faites une page en php avec un echo "votre contenu" et un header content-type Si vous tenez vraiment à rester en iso utilisez aussi le php en fessant un utf8_decode()
-ZN- Posté 14 Mai 2008 Auteur Posté 14 Mai 2008 (modifié) Ok, mais je ne comprends pas tout (je que je fais ne fonctionne pas) ... j'explique détails ce que je fais. J'aimerai bien comprendre, parce que là je suis perdu ... C'est pour une page de validation d'inscription à un site. Cette page est en iso-8859-1 Selon la valeur d'un select (langue), je charge en ajax le contenu d'un fichier php Voilà l'ensemble de fonctions qui chargent la langue: le javascript qui envoie les parametres au script php, qui recupere le contenu du bon fichier, et qui met le contenu de ce fichier dans un textarea ... en gros tout fonctionne, sauf l'encodage ... <script type='text/javascript'>function getXhr(){var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } }else { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr;}function goLanguage(){var xhr = getXhr();xhr.onreadystatechange = function(){// On ne fait quelque chose que si on a tout reçu et que le serveur est okif(xhr.readyState == 4 && xhr.status == 200){ welcome = xhr.responseText; document.forms.form1.welcomemessage.value = welcome; }}xhr.open("POST","ajaxLoadMessage.php",true);xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');sel = document.getElementById('blogLanguage');idlanguage= sel.value;xhr.send("lang="+idlanguage); }</script> le script ajaxLoadMessage, qui en gros va charger le fichier dans la bonne langue <?switch ($_POST["lang"]){ case 0: $lang = 'en'; break; case 1: $lang = 'es'; break; case 2: $lang = 'fr'; break; }include "lang/".$lang."/validate-reject.php";echo ($welcomeMessage); ?> et enfin le fichier validate-reject.php <? $welcomeMessage = "<html><body><p>Bonjour,</p><p>Ton inscription a été validée.</p> <p>A bientôt</p>";?> pouvez vous s'il vous plait m'expliquer en détails ce que je dois faire et où (quel fichier)? Ca me tracasse ce truc, je n'arrive pas à comprendre ce que je dois faire ... Notez que je souhaite rester en ISO Merci d'avance Modifié 14 Mai 2008 par -ZN-
-ZN- Posté 14 Mai 2008 Auteur Posté 14 Mai 2008 Heu... en fait ca passe là il suffisait d'ajouter header("Content-Type: text/plain;charset=iso-8859-1"); dans mon ajaxLoadMessage.php cool
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant