오늘 프로젝트에서 자바스크립트의 이스케이프를 사용하여 한자를 인코딩한 후 언이스케이프를 사용하여 디코딩해야 하는 상황에 직면했습니다.
구체적인 상황은 다음과 같습니다.
먼저 EditPlus를 사용하여 테스트 페이지 test.html을 열고 다음 HTML 코드를 편집합니다.
<!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>
페이지 인쇄:
%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD
이쯤 되면 뭔가 잘못됐음을 알 수 있죠. 한자에 해당하는 글자 수만 봐도 이미 틀렸네요!
그런 다음 다음 코드를 사용하여 이스케이프 해제로 디코딩된 중국어 문자를 테스트합니다.
var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD"); document.write(relstr);
깨진 문자 등장: �ű�֮��
해결책:
Dreamweaver로 test.html 파일을 열고 문제를 찾아보세요!
원본 단락
var teststr=escape("脚本之家");
이
이 되었습니다.
var teststr=escape("ű֮");
에디터의 초기 인코딩으로 인해 발생한다고 볼 수 있어요!
Dreamweaver에서 중국어 문자를 다시 변경하고 test.html을 다시 실행한 후 해당 인코딩을 가져옵니다.
%u811A%u672C%u4E4B%u5BB6
이때 unescape를 사용하여 디코딩합니다.
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6"); document.write(relstr);
원문에 맞는 한자를 얻었습니다: Script House!