L'exemple de cet article décrit comment la fonction d'échappement résout le problème des caractères chinois tronqués dans la transmission ajax en js. Il est partagé avec tout le monde pour votre référence. La méthode spécifique est la suivante :
1. Description du problème :
À l'origine, les effets spéciaux escape() dans la page Web étaient codés en chinois selon le jeu de caractères iso-8859-1, de sorte que les paramètres de la requête puissent être obtenus directement via request.getparameter(), mais plus tard, javascript s'échappera ( ) ) a été remplacé par un codage de jeu de caractères Unicode. Par conséquent, les paramètres de la requête ne peuvent pas être obtenus directement dans le didacticiel jsp et le servlet. Je ne connais pas la raison spécifique.
2.Solution :
1. Tout d'abord, escape() encode les caractères chinois deux fois. Si vous souhaitez transmettre le nom du paramètre et que la valeur est "Bonjour", le format de l'URL est....name=escape(escape("Bonjour". ") ), de cette manière, les paramètres codés peuvent être obtenus dans request.getparameter().
2. Étant donné que les paramètres obtenus sont au format %u4f60%u597d, ils ne peuvent pas être décodés à l'aide de la fonction urldecoder.decode() classique. Heureusement, il y a suffisamment de personnes talentueuses dans le monde pour trouver une classe d'outils directement sur le fichier. Internet., peut réaliser l'encodage et le décodage de style escape() et unescape() en javascript
Définition et usage :
La fonction escape() encode une chaîne afin qu'elle puisse être lue sur tous les ordinateurs.
Syntaxe :
chaîne requise. La chaîne à échapper ou à encoder.
Une copie de la chaîne codée. Certains de ces caractères sont remplacés par des séquences d'échappement hexadécimales.
Cette méthode n'encode pas les lettres et les chiffres ASCII, ni les caractères de ponctuation ASCII suivants : - _ . Tous les autres caractères seront remplacés par des séquences d'échappement.
Astuce : Vous pouvez utiliser unescape() pour décoder les chaînes codées escape().
Remarque : ecmascript v3 déprécie cette méthode, les applications doivent plutôt utiliser decodeuri() et decodeuricomponent()