escape編碼與unescape解碼漢字出現(xiàn)亂碼的解決方法
今天的項(xiàng)目中遇到需要用javascript的escape編碼漢字再用unescape解碼的情況,測試代碼段的時(shí)候出現(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í)可以看出情況不對,單從漢字對應(yīng)的字符數(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中將漢字改回來,重新運(yùn)行test.html,得到了對應(yīng)的編碼:
%u811A%u672C%u4E4B%u5BB6
此時(shí)再用unescape解碼:
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6"); document.write(relstr);
就得到了原先正確的漢字:腳本之家!
相關(guān)文章
HTML+CSS+JS實(shí)現(xiàn)的簡單應(yīng)用小案例分享
這篇文章主要為大家分享四個(gè)用HTML+CSS+JS實(shí)現(xiàn)的簡單應(yīng)用小案例,有:猜數(shù)字、表白墻、切換日夜間模式和待辦事項(xiàng),需要的可以參考一下2022-02-02webpack-mvc 傳統(tǒng)多頁面組件化開發(fā)詳解
這篇文章主要介紹了webpack-mvc 傳統(tǒng)多頁面組件化開發(fā)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05ES6新特性五:Set與Map的數(shù)據(jù)結(jié)構(gòu)實(shí)例分析
這篇文章主要介紹了ES6新特性五之Set與Map的數(shù)據(jù)結(jié)構(gòu),結(jié)合實(shí)例形式分析了ES6中Set與Map的功能、定義、屬性、結(jié)構(gòu)與相關(guān)使用技巧,需要的朋友可以參考下2017-04-04js實(shí)現(xiàn)瀏覽本地文件并顯示擴(kuò)展名的方法
這篇文章主要介紹了js實(shí)現(xiàn)瀏覽本地文件并顯示擴(kuò)展名的方法,涉及javascript文件上傳及字符串操作的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下2015-08-08使用javascript實(shí)現(xiàn)雪花飄落的效果
本文主要介紹了使用javascript實(shí)現(xiàn)雪花飄落的特效,雖然網(wǎng)上有很多,不過都是比較陳舊了,兼容性不是太好,于是動(dòng)手寫一個(gè),把思路和實(shí)現(xiàn)代碼都分享給大家。2015-01-01