2009-02-16 5 views
2

J'ai des problèmes pour échapper des caractères spéciaux dans AS3.caractères d'échappement dans as3 comme javascript ne

trace(escape("who are ü?")); 

rendements qui% 20are% 20% uFFFD% 3F

ou

trace(encodeURIComponent("who are ü?")); 

rendements qui% 20are% 20% EF% BF% BD% 3F

tout en javascript ce

alert(encodeURIComponent("who are ü?")); 

retourne qui% 2 0are% 20% C3% BC% 3F

et

alert(escape("who are ü?")); 

rendements qui% 20are% 20% FC% 3F

Toute suggestion comment obtenir AS3 pour revenir se sont échappés des caractères spéciaux comme javascript est? Pourquoi as3 semble-t-il étouffer?

(ici est une bonne référence: http://www.ultrashock.com/forums/actionscript/as3-escape-vs-as2-escape-122046.html)

+0

Ce que j'obtiens avec flex 3.0 c'est: qui% 20are% 20% FC% 3F N'est-ce pas ce que tu veux? Pouvez-vous revérifier? C'est avec une application de démonstration AIR (et je cours Flex 3.0)! – dirkgently

+0

Malheureusement, mes instructions de trace sont "who% 20are% 20% uFFFD% 3F" (en utilisant flex3). – jedierikb

+0

L'indicateur de code% uFFFD indique que vous n'avez pas été enregistré correctement. Avez-vous apporté des modifications aux paramètres régionaux? Je crois que vous regardez la sortie de la console. – dirkgently

Répondre

5

Ressemble AS est Echapper à la chaîne en UTF-16, alors que l'exemple Javascript échappe au format UTF-8. escape ne définit pas comment traiter les caractères non-ascii, c'est pourquoi il est obsolète depuis JavaScript 1.5. Vous devriez utiliser la fonction encodeURIComponent à la place, qui est définie comme s'échappant comme UTF-8 - Cela devrait être cohérent entre les différentes implémentations. Si vous avez besoin du comportement AS, je ne pense pas qu'il existe une fonction native dans Javascript, mais vous pouvez utiliser les fonctions fournies here.

1

Bien que mon IDE (intellij) affichait, sauvegardait et chargeait des caractères spéciaux, ils étaient sauvegardés en 1252. Le passage à UTF-8 a résolu cela.

Questions connexes