本方法是通过生成GB2312编码的汉字后,再转码为UTF-8编码。之所以这样做是因为UTF-8的常用汉字太过分散,随机生成会出现大量生僻字,而使用GB2312编码的好处在于其收录的大部分汉字为常用汉字,具体参考下面的介绍。

GB2312-80 字符编码介绍

  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;
}

全文转自:https://www.cnblogs.com/Anselst-Blog/p/7784465.html

最新文章

  1. 罗马数字转整数Leetcode13
  2. Oracle11g的安装和基本使用
  3. Android 的提权 (Root) 原理是什么?
  4. Linux下smokeping网络监控环境部署记录
  5. ArcGIS Server发布服务,报错001270
  6. Delphi 两个应用程序(进程)之间的通信
  7. W5500问题集锦(二)
  8. wireshark的ubuntu更新ppa源
  9. 【二分】XMU 1587 中位数
  10. 《JavaScript 闯关记》之基本包装类型
  11. org.hibernate.MappingException: Could not determine type for: java.util.List, at table: user, for...
  12. MySQL与MongoDB
  13. python一些语法糖用法
  14. Vue下载页面显示内容
  15. sql 三表左外链接的2种写法【原】
  16. C#大型电商项目优化(二)——嫌弃EF与抛弃EF
  17. MySQL ERROR 1300 (HY000): Invalid utf8 character string
  18. CSS中易忽略的点
  19. office2013安装和破解教程
  20. Codeforces807 A. Is it rated? 2017-05-08 23:03 177人阅读 评论(0) 收藏

热门文章

  1. React.js 小书 Lesson5 - React.js 基本环境安装
  2. php 可逆的加密算法
  3. Aspose.Cells导入导出execl
  4. SSRS 参数 单选 多选
  5. 将BufferedImage转换为InputStream,亲测可用
  6. webpack-dev-server.js 服务器配置说明
  7. Android 切换主题换肤实现
  8. lucene中文学习地址推荐
  9. java:xml解析
  10. Linux修改文件permission可执行属性