1. 程式人生 > >學習android筆記(六):隨機生成常用漢字

學習android筆記(六):隨機生成常用漢字

GB 2312-80 是中國國家標準簡體中文字符集,全稱《資訊交換用漢字編碼字符集·基本集》,由中國國家標準總局釋出,1981年5月1日實施。GB2312 編碼通行於中國大陸;新加坡等地也採用此編碼。中國大陸幾乎所有的中文系統和國際化的軟體都支援 GB 2312。

GB2312 標準共收錄 6763 個漢字,其中一級漢字 3755 個,二級漢字 3008 個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裡爾字母在內的 682 個字元。GB2312 的出現,基本滿足了漢字的計算機處理需要,它所收錄的漢字已經覆蓋中國大陸 99.75% 的使用頻率。對於人名、古漢語等方面出現的罕用字,GB2312 不能處理,這導致了後來 GBK 及 GB18030 漢字字符集的出現。

GB2312 中對所收漢字進行了“分割槽”處理,每區含有 94 個漢字/符號。這種表示方式也稱為區位碼。

  • 01 - 09 區為特殊符號。
  • 16 - 55 區為一級漢字,按拼音排序。
  • 56 - 87 區為二級漢字,按部首/筆畫排序。

10 - 15 區及 88 - 94 區則未有編碼。舉例來說,“啊”字是 GB2312 之中的第一個漢字,它的區位碼就是 1601。

每個漢字及符號以兩個位元組來表示。第一個位元組稱為“高位位元組”,第二個位元組稱為“低位位元組”。“高位位元組”使用了 0xA1 - 0xF7(把 01 - 87 區的區號加上 0xA0),“低位位元組”使用了 0xA1 - 0xFE(把 01 - 94 位的位號加上 0xA0)。 由於一級漢字從 16 區起始,漢字區的“高位位元組”的範圍是 0xB0 - 0xF7,“低位位元組”的範圍是 0xA1 - 0xFE,佔用的碼位是 72 * 94 = 6768。其中有 5 個空位是 D7FA - D7FE。例如“啊”字在大多數程式中,會以兩個位元組,0xB0(第一個位元組)0xA1(第二個位元組)儲存。(與區位碼對比:0xB0 = 0xA0 + 16, 0xA1 = 0xA0 + 1)。

國家標準 GB 18030-2005《資訊科技 中文編碼字符集》,是中華人民共和國現時最新的內碼字集,與 GB 2312-1980 完全相容,與 GBK 基本相容,支援 GB 13000 及 Unicode 的全部統一漢字,共收錄漢字 70244 個。現行版本為國家質量監督檢驗總局和中國國家標準化管理委員會於2005年11月8日釋出,2006年5月1日實施,為在中國境內所有軟體產品支援的強制標準。

(以上資料來源於“維基百科”)

     /**

     * 獲取隨機漢字
     * @return
     */
    private String getRandomWord(){
        String str = "";
        int heightPos;
        int lowPos;
        Random rd = new Random();
        heightPos = 176 + Math.abs(rd.nextInt(39));
        lowPos = 161 + Math.abs(rd.nextInt(93));
        byte[] bt = new byte[2];
        bt[0] = Integer.valueOf(heightPos).byteValue();
        bt[1] = Integer.valueOf(lowPos).byteValue();
        try {
            str = new String(bt,"GBK");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return str;
    }