escape編碼與unescape解碼漢字出現(xiàn)亂碼的解決方法
今天的項目中遇到需要用javascript的escape編碼漢字再用unescape解碼的情況,測試代碼段的時候出現(xiàn)了亂碼的情況。
具體情況如下:
首先,用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
此時可以看出情況不對,單從漢字對應的字符數(shù)量上來說已經(jīng)不對了!
再使用如下代碼測試unescape解碼后的漢字:
var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD");
document.write(relstr);
出現(xiàn)了亂碼:�ű�֮��
解決方法:
用Dreamweaver打開test.html文件,發(fā)現(xiàn)了問題所在!
原先的那段
var teststr=escape("腳本之家");
變成了
var teststr=escape("ű֮");
可見是編輯器的初始編碼造成的!
在Dreamweaver中將漢字改回來,重新運行test.html,得到了對應的編碼:
%u811A%u672C%u4E4B%u5BB6
此時再用unescape解碼:
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");
document.write(relstr);
就得到了原先正確的漢字:腳本之家!
相關文章
webpack-mvc 傳統(tǒng)多頁面組件化開發(fā)詳解
這篇文章主要介紹了webpack-mvc 傳統(tǒng)多頁面組件化開發(fā)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
ES6新特性五:Set與Map的數(shù)據(jù)結構實例分析
這篇文章主要介紹了ES6新特性五之Set與Map的數(shù)據(jù)結構,結合實例形式分析了ES6中Set與Map的功能、定義、屬性、結構與相關使用技巧,需要的朋友可以參考下2017-04-04

