一個漢字占幾個字節你真的記住了嗎?


一個漢字占幾個字節是不是不太好記呢,編碼不一樣則占字節位就不一樣。下面用一段簡短的代碼了解一下一個漢字占幾個字節。

示例

String s = "情系IT";
        try {
            byte[] bytes1 = s.getBytes("gbk");
            for (byte b : bytes1) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");
            }
            System.out.println();
            byte[] bytes2 = s.getBytes("utf-8");
            for (byte b : bytes2) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");

            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

下面是運行結果:

解析

  1. Integer.toHexString(int a),這個是java API提供的一個方法,目的是返回整數參數的字符串表示形式,作為16位中的無符號整數。
  2. 為什么要用b & 0xff ?
    • Integer.toHexString(int a),需要的是一個int類型的參數。
    • 0xff代表的就是16進制的11111111。
    • 我們知道byte是1個字節,int是4個字節,也就是要將8位轉換為32位。如果無符號位的話,我們直接補0即可。因此&0xff就是為了保證符號位。
    • 舉個例子:-127轉為二進制為11111111,取反求補則為10000001,轉十六進制則為81,繼續轉成十進制,看成無符號數就會發現變成了129。

總結

根據結果我們可看出,
字符串是utf-8編碼,一個漢字三個字節,一個字母一個字節。
字符串是gbk編碼時,一個漢字兩個字節,一個字母一個字節。

如果想看其他編碼下的情況,可復制上面的代碼,將字符串進行其他編碼查看即可。
注意:如果字符串不進行編碼,則默認為項目的編碼。

如果文章對您有幫助,請記得點贊關注喲~
歡迎大家關注我的公眾號:情系IT,每日推送技術文章供大家學習參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM