Maison > interface Web > js tutoriel > le corps du texte

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
Libérer: 2016-05-16 16:42:51
original
2434 Les gens l'ont consulté

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>
Copier après la connexion

Impression des pages :

%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD
Copier après la connexion

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);
Copier après la connexion

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("脚本之家");
Copier après la connexion

est devenu

var teststr=escape("&#369;&#1454;");
Copier après la connexion

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
Copier après la connexion


À ce stade, utilisez unescape pour décoder :

var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");
document.write(relstr);
Copier après la connexion

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!