2009-04-02 8 views
0

J'essaie de prendre les valeurs d'un <textarea> et de le transmettre via XMLHttpRequest à une page PHP qui ajoute le contenu à une base de données. Cependant, lorsqu'il atteint la base de données, les caractères "å æ ø" sont convertis en "Ã ¥ Ã" Ã ".Ajax déconner les caractères norvégiens

J'ai cherché haut et bas et j'ai essayé de passer en UTF-8, essayé d'utiliser les versions JavaScript de htmlentities()/htmlspacialchars() etc, mais peu importe ce que j'essaie de faire, le résultat est toujours le même.

Ma page est définie sur iso-8859-15 et le même est le requestType pour la demande.

Parce que je n'ai pas trop utilisé Ajax dans mon travail, j'ai découpé la procédure d'installation depuis le réseau. Il ressemble à ceci:

var page_request = false; 
var contentType = "application/x-www-form-urlencoded;charset=iso-8859-15"; 

if (window.XMLHttpRequest) 
{ 
    page_request = new XMLHttpRequest(); 
} 

// If the Browser is Internet Explorer 
else if (window.ActiveXObject) 
{ 
    try 
    { 
    page_request = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
    try 
    { 
     page_request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch (e){} 
    } 
} 
else 
{ 
    return false; 
} 

page_request.open('POST', url, true); 
page_request.setRequestHeader("Content-Type", contentType); 
page_request.send(query); 

Cependant, dans le fichier PHP à l'extrémité de réception et dans la base de données les caractères spéciaux sont convertis.

Toute aide est très appréciée! J'ai passé la meilleure partie de cette journée à essayer de corriger cette erreur ...

+0

Est-ce que tous les navigateurs le font? En outre, quel jeu de charicter est la DB? –

Répondre

-2

Tout d'abord, ce site Web prend en charge la coloration syntaxique, mais seulement si vous sélectionnez le code et cliquez sur le petit symbole 101 | 010.

Deuxièmement, je recommande ISO-8859-1, mais je ne dis pas qui est garanti pour travailler ...

0

vous devez utiliser encodeURIComponent sur votre contenu textarea. et utilisez aussi UTF-8.

1

Votre déclaration de charset est mensongère. Dire que le contenu est en ISO ne le rend pas magiquement ISO. Votre variable query semble être en codage UTF-8. Cela est à prévoir, car les chaînes Javascript sont toujours Unicode et les fonctions comme encodeURIComponent() (qui sont nécessaires pour formater correctement les requêtes GET et POST) utilisent UTF-8. À mon humble avis, la meilleure chose à faire est d'arrêter d'utiliser les encodages ISO, complètement, pour toujours.

Si vous ne pouvez pas encore le faire, vous devez vous-même sérialiser les données en Javascript ou convertir UTF-8 en ISO lors de la réception de données publiées sur le serveur.

Questions connexes