Maison  >  Article  >  interface Web  >  Solution aux caractères tronqués dans l'encodage d'échappement et le décodage sans échappement des compétences en caractères chinois_javascript

Solution aux caractères tronqués dans l'encodage d'échappement et le décodage sans échappement des compétences en caractères chinois_javascript

WBOY
WBOYoriginal
2016-05-16 16:42:512484parcourir

Dans le projet d'aujourd'hui, nous avons rencontré une situation dans laquelle nous devions utiliser l'échappement de JavaScript pour encoder les caractères chinois, puis utiliser une évasion pour les décoder. Lors du test du segment de code, des caractères tronqués sont apparus.
La situation spécifique est la suivante :
Tout d'abord, utilisez EditPlus pour ouvrir la page de test test.html et modifiez le code html suivant :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>unescape测试</title>
</head>
<body>
<script>
var teststr=escape("脚本之家");
document.write(teststr);
</script>
</body>
</html>

Impression des pages :

%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD

Vous pouvez voir que quelque chose ne va pas à ce stade. Rien qu'au nombre de caractères correspondant aux caractères chinois, c'est déjà faux !
Utilisez ensuite le code suivant pour tester les caractères chinois décodés par unescape :

var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD");
document.write(relstr);

Des caractères tronqués sont apparus : �ű�֮��

Solution :
Ouvrez le fichier test.html avec Dreamweaver et découvrez le problème !
Le paragraphe original

var teststr=escape("脚本之家");

est devenu

var teststr=escape("&#369;&#1454;");

On voit que cela est dû à l'encodage initial de l'éditeur !
Modifiez à nouveau les caractères chinois dans Dreamweaver, réexécutez test.html et obtenez l'encodage correspondant :

%u811A%u672C%u4E4B%u5BB6


À ce stade, utilisez unescape pour décoder :

var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");
document.write(relstr);

Nous avons obtenu le caractère chinois original correct : Script House !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn