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("脚本之家");
wurde
var teststr=escape("ű֮");
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!