Heim  >  Artikel  >  Web-Frontend  >  Lösung für verstümmelte Zeichen bei der Escape-Kodierung und Unescape-Dekodierung chinesischer Zeichen_Javascript-Kenntnisse

Lösung für verstümmelte Zeichen bei der Escape-Kodierung und Unescape-Dekodierung chinesischer Zeichen_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:42:512485Durchsuche

Im heutigen Projekt sind wir auf eine Situation gestoßen, in der wir JavaScripts Escape verwenden mussten, um chinesische Zeichen zu codieren, und dann Unescape verwenden mussten, um sie zu decodieren. Beim Testen des Codesegments erschienen verstümmelte Zeichen.
Die konkrete Situation ist wie folgt:
Öffnen Sie zunächst mit EditPlus die Testseite test.html und bearbeiten Sie den folgenden HTML-Code:

<!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>

Seitenausdruck:

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

Sie können an dieser Stelle erkennen, dass etwas nicht stimmt. Allein an der Anzahl der Zeichen, die den chinesischen Schriftzeichen entsprechen, ist es bereits falsch!
Verwenden Sie dann den folgenden Code, um die von unescape dekodierten chinesischen Zeichen zu testen:

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

Es erschienen verstümmelte Zeichen: �ű�֮��

Lösung:
Öffnen Sie die Datei test.html mit Dreamweaver und entdecken Sie das Problem!
Der ursprüngliche Absatz

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

wurde

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

Es ist ersichtlich, dass dies an der anfänglichen Codierung des Editors liegt!
Ändern Sie die chinesischen Zeichen wieder in Dreamweaver, führen Sie test.html erneut aus und erhalten Sie die entsprechende Codierung:

%u811A%u672C%u4E4B%u5BB6


Verwenden Sie zu diesem Zeitpunkt unescape, um Folgendes zu dekodieren:

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

Wir haben das originale korrekte chinesische Schriftzeichen erhalten: Script House!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn