>  기사  >  웹 프론트엔드  >  이스케이프 인코딩 및 이스케이프 디코딩 한자_javascript 기술에서 잘못된 문자에 대한 솔루션

이스케이프 인코딩 및 이스케이프 디코딩 한자_javascript 기술에서 잘못된 문자에 대한 솔루션

WBOY
WBOY원래의
2016-05-16 16:42:512435검색

오늘 프로젝트에서 자바스크립트의 이스케이프를 사용하여 한자를 인코딩한 후 언이스케이프를 사용하여 디코딩해야 하는 상황에 직면했습니다.
구체적인 상황은 다음과 같습니다.
먼저 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("&#369;&#1454;");

에디터의 초기 인코딩으로 인해 발생한다고 볼 수 있어요!
Dreamweaver에서 중국어 문자를 다시 변경하고 test.html을 다시 실행한 후 해당 인코딩을 가져옵니다.

%u811A%u672C%u4E4B%u5BB6


이때 unescape를 사용하여 디코딩합니다.

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

원문에 맞는 한자를 얻었습니다: Script House!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.