Javascript et utf-8 / caractères spéciaux aident

BREVE VERSION DE QUESTION: Donc, ma question est fondamentale: comment puis-je configurer le javascript pour utiliser UTF-8 afin que å ä ö soit pris en charge, alors mon javascript peut ajouter les valeurs correctes aux options de la liste déroulante?

PLUS D'EXPLICATION: J'utilise javascript pour remplir "options" dans une liste déroulante sur ma page principale. Les listes déroulantes sont sous une forme qui appelle un script php, qui interroge une base de données mysql.

Le problème est: j'utilise des caractères spéciaux tels que å ä ö dans ma base de données mysql. Et lorsque j'interroge la base de données mysql comme ceci:

SELECT * FROM database WHERE city = $city 

Il ne trouve rien.

Ceci parce que $ city contient des caractères spéciaux définis par javascript. Mais si vous définissez la variable $ city sans javascript, par exemple dans mon document html avec

  option value=åäö 

Alors cela fonctionnera. Cela signifie que le javascript est le problème, et il définit les caractères spéciaux à autre chose, ce qui rend la requête à ne rien trouver.

Javascript qui remplit ma liste déroulante:

  if(document.nav_form_main.nav_city_list.value == '4'){ removeAllOptions(document.nav_form_main.nav_city_list); addOption(document.nav_form_main.nav_city_list, "Göteborg", "Göteborg", ""); addOption(document.nav_form_main.nav_city_list, "goteborg_closeby", "Angränsande områden", ""); addOption(document.nav_form_main.nav_city_list, "1", "Hela Sverige", ""); addOption(document.nav_form_main.nav_city_list, "other_area", "-- Välj område på nytt --", ""); } function removeAllOptions(selectbox) { var i; for(i=selectbox.options.length-1;i>=0;i--) { //selectbox.options.remove(i); selectbox.remove(i); } } function addOption(selectbox, value, text ) { var optn = document.createElement("OPTION"); optn.text = text; optn.value = value; selectbox.options.add(optn); } 

MY HTML MAIN DOCUMENT USES: ISO 8859-1

QUAND ECHOING "ÅÄÖ" ça marche dans mon code PHP. MAIS QUAND L'ÉCHANGE DE LA VARIABLE DU JAVASCRIPT L'ÅÄÖ EST REMPLACÉE PAR DES SYMBOLES ÉLECTRIQUES

Essayez ces avant d'envoyer à / après la réception du serveur …

 Function encode_utf8 (s) {
   Retourner unescape (encodeURIComponent (s));
 }

 Function decode_utf8 (s) {
   Retour décodeURIComponent (échappement (s));
 } 

Voici comment j'ai résolu ce problème:

 document.getElementById("somewhere").innerHTML="mytext"; myoption = document.createElement("option"); myoption.value="myvalue"; myoption.text=document.getElementById("somewhere").innerHTML; myselect.add(myoption,null); 

"Quelque part" est un élément créé inutilisé ou caché ou spécial dans la page.

Lorsque javascript lit à partir de innerHTML, vous obtenez les caractères appropriés.

Pour éviter tout type de problèmes, vous devez vous assurer de traiter votre contenu correctement tant sur le client que sur le côté du serveur.

Avec PHP: utf8_encode() et utf8_decode()

Avec l'utilisation de Javascript utilisez webtoolkit.utf8.js : Utf8.encode() et Utf8.decode()

Pour autant que je voie, votre problème est du côté du serveur, pas du côté client. En d'autres termes, le problème se trouve dans votre php, et non votre javascript. Essayez de créer un script php simple pour générer votre demande javascript.