首頁  >  文章  >  後端開發  >  php隨機產生漢字實作方法

php隨機產生漢字實作方法

小云云
小云云原創
2018-03-02 09:18:044607瀏覽

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日實施,為在中國境內所有軟體產品支援的強制標準。

 function getChar($num)  // $num为生成汉字的数量
    {
        $b = '';
        for ($i=0; $i<$num; $i++) {
            // 使用chr()函数拼接双字节汉字,前一个chr()为高位字节,后一个为低位字节
            $a = chr(mt_rand(0xB0,0xD0)).chr(mt_rand(0xA1, 0xF0));
            // 转码
            $b .= iconv('GB2312', 'UTF-8', $a);
        }
        return $b;
    }

相關推薦:

sqlserver 快速產生漢字的首拼字母的函數(經典)

以上是php隨機產生漢字實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn