java gb13000_浅谈 GB13000
引言
我前幾天寫了一篇隨筆“隨機生成常用漢字(再次改進版)”。園友“菜菜灰”評論說“看著太累,不認識的字還是多,代碼也很多,幾段代碼顯示2萬多漢字”,并給出了相應的 C# 代碼:
1 System.Text.StringBuilder sb = newSystem.Text.StringBuilder();2 sb.Append("
");3 for (int i = 19968; i < 40869; i++)4 {5 sb.Append(((char)i).ToString());6 }7 sb.Append("
");8 Response.Write(sb.ToString());
上述代碼給出了 20,901 個漢字。
GB 13000 的字符集包含 20,902 個漢字,其 Unicode 編碼從 0x4E00 到 0x9FA5,即從 19,968 到 40,869。所以上述代碼有點小問題,第3行的“
生成 GB13000 字符集的 C# 程序
下面就是經過修改后的 C# 程序:
1 usingSystem;2 usingSystem.Text;3
4 sealed classGB13000Creator5 {6 static voidMain()7 {8 Console.WriteLine(GetGB13000String());9 }10
11 static stringGetGB13000String()12 {13 var sb = newStringBuilder();14 for (var i = 19968; i <= 40869; i++) sb.Append((char)i);15 returnsb.ToString();16 }17 }
其實,以下程序也實現完全相同的功能:
1 usingSystem;2
3 sealed classGB13000Creator4 {5 static voidMain()6 {7 Console.WriteLine(GetGB13000String());8 }9
10 static stringGetGB13000String()11 {12 var gb = new char[20902] ;13 for (var i = 0; i < gb.Length; i++) gb[i] = (char)(i + 19968);14 return new string(gb);15 }16 }
這個程序應該比前一個運行速度快點兒。
編譯和運行
在 Arch Linux 的 Mono 2.10.8 環境下編譯和運行:
work$ dmcs GB13000Creator.cs && mono GB13000Creator.exe
一丁丂七丄丅丆萬丈三上下丌不與丏丐丑丒專 ... 龒龓龔龕龖龗龘龍龔龕龜龝龞龜龠龡龢龣龤龥
上述運行結果就是 GB 13000 字符集的 20,902 個漢字。
進一步的說明
其實 GB 13000 這個國家標準已經有點過時了,現行的國家標準是 GB 18030,全稱:國家標準 GB 18030-2005《信息技術 中文編碼字符集》,是中華人民共和國現時最新的內碼字集,是GB 18030-2000《信息技術 信息交換用漢字編碼字符集 基本集的擴充》的修訂版。與 GB 2312-1980 完全兼容,與 GBK 基本兼容,支持 GB 13000 及 Unicode 的全部統一漢字,共收錄漢字 70,244 個。本規格的初版是由中華人民共和國信息產業部電子工業標準化研究所起草,由國家質量技術監督局于2000年3月17日發布。現行版本為國家質量監督檢驗總局和中國國家標準化管理委員會于2005年11月8日發布,2006年5月1日實施。此規格為在中國境內所有軟件產品支持的強制規格。
不知道有沒有簡單的方法生成 GB 18030 規定的這 70,244 個漢字?
參考資料
總結
以上是生活随笔為你收集整理的java gb13000_浅谈 GB13000的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学界 | CVPR 2018颁布五大奖项
- 下一篇: 12万字 | 2021数据安全与个人信息