字元 和 字元編碼 的相互轉換

來源:互聯網
上載者:User

標籤:style   blog   color   java   使用   strong   io   檔案   

想必大家都知道,使用中文進行編程,總逃不開一個“字元編碼”的問題。

 在儲存的時候,編碼不對就變成亂碼,亂碼一處理不好還會產生無法復原的結果。

 在傳輸和解析的時候,編碼不對也會導致處理出錯。

 

在web方面,HTML、CSS、JavaScript 都或多或少地會碰到這類問題,解決這類問題我們可能會用到JavaScript裡的3個方法:

  1,String.fromCharCode( 字元編碼num ),傳入單個字元的Unicode編碼,得到字元。

  2,字串.charCodeAt( 字元下標 ),指定字串下標,得到下標所指字元的Unicode編碼,返回10進位的編碼(num類型)。

  3,escape( 字串str ),跟第2條一樣,也能把字元轉換成字元編碼,不同的是這裡可以一次性轉換多個字元,並返回16進位的編碼(str類型)。

  利用這兩個方法可以解決字元和字元編碼的轉換。

 

  HTML

    裡最典型的就是:左右角括弧(<, >)、不間斷空格、單雙引號(‘, ") 、& © 等字元的使用

    在使用的時候我們必須記住:<要寫成&lt;、>要寫成&gt;、不間斷空格則要寫成&nbsp;  ......

    如果記不住呢?只能查,上網找表查。。。

    其實大可不必這麼麻煩,要知道,HTML支援對字元編碼的解析,如:<對應的是&#60;、>對應的是&#61;

    其中60和61指的是這個字元在Unicode中的編碼,通過使用上面的方法:

      "<".charCodeAt(0);    // 返回 60,相應的 &#60; 代表 <

      "©".charCodeAt(0);    // 返回 169,說明 &#169; 會被HTML解析成 ©

    代碼如下:

function toCharCode( ch ) {    // 適用於HTML,用於擷取字元實體。  if( typeof ch === "string" && ch.length === 1) {    alert( "字元 " + ch + " 所對應的HTML字元實體是:\n&#" + ch.charCodeAt(0) + ";" );
  } else {    alert( "請輸入單個字元, 如\"&\"." );  }}toCharCode( "?" );          // 把?號替換成你要轉換的字元,運行。

    使用方法:開啟瀏覽器,按F12,複製上面的代碼並替換關鍵字,運行。

 

  CSS

    CSS碰到的字元編碼的問題比較少,但據我所知的,下面這種情況:

      body { font-family: "微軟雅黑", sans-serif;}

    直接使用中文會在ie6下可能會導致無效,使用英文名字又可能導致別的問題,所以最佳方案是把漢字轉成Unicode碼。

    代碼如下:

function toUnicode( str ) {    // 把漢字轉換成Unicode編碼,適用(但不限於)CSS,JavaScript。    if ( typeof str === "string" ) {        alert( "\"" + str + "\" 的Unicode編碼是:\n" + escape(str).replace(/\%/g, "\\") );    } else {        alert( "請輸入一個或多個字元,如\"宋體\"." );    }}toUnicode( "?" );          // 把?號替換成要轉換的漢字,運行。

    反過來,如果我們在查看源檔案的時候看到了類似:

      body {font-family: "\u5B8B\u4F53";}

    之類的寫法,我們也可以反過來講Unicode碼翻譯成漢字。操作更簡單:

      直接開啟瀏覽器,F12。輸入 alert("\u5B8B\u4F53"); 並運行,瀏覽器就會跳出提示“宋體”。

 

  JavaScript

    js的字串已經足夠強大,對於漢字可以直接寫成 "這是漢字",已經足以應付大多數情況。

    但js裡還有用於表示特殊字元的“逸出字元”,如\n。另外還有 \x?? 用來表示ASCII碼字元,\u???? 用來表示Unicode碼字元。

    具體的轉換我也不重複說了,平時能用到的主要就是 漢字 和 Unicode 的相互轉換,上面已經講過。JavaScript的轉換方法跟CSS也是一致。

    唯一需要注意的就是:

      如果結果不正確,請確認格式和進位是否一致。

    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.