js文件中,有些變量的值可能會含有漢字,畫面引入js之後,有可能會由於字符集的緣由,把裏面的漢字都變成亂碼。後來發現網上的一些js裏會把變量中的漢字都表示成」\u「開頭的16進制編碼,這樣應該能夠解決上面的問題。 javascript
最近有時間在網上查找了一下實現方式,一種比較大衆化的: html
function tounicode(data) { if(data == '') return '請輸入漢字'; var str =''; for(var i=0;i<data.length;i++) { str+="\\u"+parseInt(data[i].charCodeAt(0),10).toString(16); } return str; } function tohanzi(data) { if(data == '') return '請輸入十六進制unicode'; data = data.split("\u"); var str =''; for(var i=0;i<data.length;i++) { str+=String.fromCharCode(parseInt(data[i],16).toString(10)); } return str; }
還找到一個相對簡單一些,但比較另類的: java
var GB2312UnicodeConverter={ ToUnicode:function(str){ return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u'); } ,ToGB2312:function(str){ return unescape(str.replace(/\\u/gi,'%u')); } };
不過都有些問題,這兩種方式,都會把出漢字之外的其餘字符都給轉換掉,作個簡單的加密解密算法仍是能夠的,但要是用來處理js文件,把回車、換行、空格、tab字符全換了,轉完之後,js文件也無法運行了。 算法
偷懶不成,只能本身按照上面代碼處理邏輯寫一個了,只要保證只轉換漢字字符就能夠了: 瀏覽器
// 漢字轉爲Unicode字符碼錶示 function toUnicode(s){ return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(){ return "\\u" + RegExp["$1"].charCodeAt(0).toString(16); }); }
<html> <head> <script language="javascript"> function Window_Load(){ var G = document.getElementById; G("cmdToU").onclick = function(){ clipboardData.setData("text",toUnicode(clipboardData.getData("text"))); } } // 漢字轉爲Unicode字符碼錶示 function toUnicode(s){ return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(){ return "\\u" + RegExp["$1"].charCodeAt(0).toString(16); }); } </script> </head> <body onload="Window_Load();"> <button id="cmdToU">漢字轉爲Unicode</button> </body> </html>
這個頁面只能在IE內核的瀏覽器下才能正常運行,由於clipboardData對象好像只在IE下面有。 編碼