今天的項(xiàng)目中遇到需要用javascript的escape編碼漢字再用unescape解碼的情況,測(cè)試代碼段的時(shí)候出現(xiàn)了亂碼的情況。
具體情況如下:
首先,用EditPlus打開測(cè)試頁面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測(cè)試</title></head><body><script>var teststr=escape("武林網(wǎng)");document.write(teststr);</script></body></html>
頁面打印輸出:
%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD
此時(shí)可以看出情況不對(duì),單從漢字對(duì)應(yīng)的字符數(shù)量上來說已經(jīng)不對(duì)了!
再使用如下代碼測(cè)試unescape解碼后的漢字:
var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD");document.write(relstr);
出現(xiàn)了亂碼:�ű�֮��
解決方法:
用Dreamweaver打開test.html文件,發(fā)現(xiàn)了問題所在!
原先的那段
var teststr=escape("武林網(wǎng)");
變成了
var teststr=escape("ű֮");
可見是編輯器的初始編碼造成的!
在Dreamweaver中將漢字改回來,重新運(yùn)行test.html,得到了對(duì)應(yīng)的編碼:
%u811A%u672C%u4E4B%u5BB6
此時(shí)再用unescape解碼:
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");document.write(relstr);
就得到了原先正確的漢字:武林網(wǎng)!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注