[javascript]實現漢字Unicode編碼的轉換

    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);
        });
      }

方法寫完了,爲了方便轉換js文件的內容,再作個簡單的頁面,加一個button在畫面上。先要作的是在js文件Ctr+A,Ctr+C,把內容拷貝 到剪貼板裏,而後再新建的這個畫面上,點button的時候,從剪貼板裏把內容讀出來,調用方法轉一下,在把內容放回剪貼板。而後再到 js文件裏Ctr+A,Ctr+V一下就能夠了。代碼以下:
<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下面有。 編碼

相關文章
相關標籤/搜索