2009-10-27 5 views
1

VERSION BRÈVE QUESTION: Donc, fondamentalement, ma question est la suivante: Comment puis-je régler le javascript pour utiliser UTF-8 de sorte que Ë Ì ö sont pris en charge, donc mon javascript peut ajouter les valeurs correctes aux options de liste déroulante?javascript et utf-8/caractères spéciaux aident

PLUS D'EXPLICATION: Im en utilisant 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, Im en utilisant des caractères spéciaux tels que å ä ö dans ma base de données mysql. Et quand je fais une recherche de la base de données MySQL comme ceci:

SELECT * FROM database WHERE city = $city 

il ne marche pas trouver quoi que ce soit.

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

 option value=åäö 

il fonctionnera. Cela signifie que le javascript est le problème, et il place les caractères spéciaux à quelque chose d'autre à la place, ce qui fait que la requête ne trouve rien.

javascript qui renseigne 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); 
    } 

MON HTML PRINCIPALES UTILISATIONS DOCUMENT: ISO 8859-1

Quand echo "ÅÄÖ" cela fonctionne dans mon code PHP. MAIS QUAND LA VARIABLE DE Faisant écho à LA JAVASCRIPT AAO EST REMPLACE PAR LES SYMBOLES WEIRD

+0

Le problème est de savoir comment vous transférez du javascript vers le serveur, très probablement. En utilisant firebug pouvez-vous montrer ce que vous envoyez au serveur dans votre demande?Et qu'est-ce que ça devrait être? –

+0

Je pense aussi, mais j'ai sauvegardé le fichier .js au format utf-8 ... Le serveur est dans le bon format, mais quoi que je fasse, je ne peux pas obtenir le fichier js d'être dans le même format .. Quand j'écris des caractères spéciaux, je passe à autre chose du fichier js. Je n'ai pas de firebug. –

+0

Montrez-nous le code qui remplit votre liste déroulante –

Répondre

0

Essayez avant d'envoyer ceux-ci à/après avoir reçu du serveur ...

 
function encode_utf8(s) { 
    return unescape(encodeURIComponent(s)); 
} 

function decode_utf8(s) { 
    return decodeURIComponent(escape(s)); 
}
+0

comment ça marche? comment dois-je l'utiliser? –

-1

Pour autant que je peux voir, vous problème est du côté serveur, pas du côté client. En d'autres termes, le problème est dans votre php, pas votre javascript. Essayez de créer un script PHP simple pour afficher votre requête javascript.

+0

Lorsque je publie Å Ä Ö cela fonctionne dans mon code php, mais lors de la sortie (en écho) de la variable contenant ÅÄÖ de ma liste déroulante javascript, il affiche un autre caractère à la place ... –

0

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

Avec PHP: utf8_encode() et utf8_decode()

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

1

Voici comment je 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 utilisé, ou caché, ou élément créé spécial dans la page.

Lorsque javascript lit depuis innerHTML, vous obtenez les caractères corrects.

Questions connexes