首頁 > web前端 > js教程 > 主體

escape編碼與unescape解碼漢字出現亂碼的解決方法_javascript技巧

WBOY
發布: 2016-05-16 16:42:51
原創
2485 人瀏覽過

在今天的專案中遇到需要用javascript的escape編碼漢字再用unescape解碼的情況,測試程式碼段的時候出現了亂碼的情況。
具體情況如下:
首先,用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
登入後複製

此時可以看出情況不對,單從漢字對應的字符數量上來說已經不對了!
再使用以下程式碼測試unescape解碼後的漢字:

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);
登入後複製

就得到了原先正確的漢字:腳本之家!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!