背景:

国家民委等单位关于在政府管理和社会公共服务信息系统中统一姓名采集应用规范的通知

对中文姓名合法性校验时,需要支持所有GB18030中涉及到的汉字(包括生僻字),并支持部分少数民族姓名中带有分隔符 ·的问题

思路:

首先考虑生僻字的问题,目前GB18030-2005《信息技术中文编码字符集》是我国自主研制的以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70000余个,可以说GB18030目前是包含汉字最全的字符集;这样我们就可以基于GB18030来校验汉字的问题

目前我们绝大部分的java项目的编码都是采用UTF-8或者是GBK,那么它们和GB18030的关系是什么样的呢,先说一下GBK,简单来说GBK里面包含的汉字是GB18030的子集,GBK收录的汉字在2W多,这样来说,如果考虑到所有的汉字,使用GBK其实是不全面的,故可以排除使用GBK这种字符集来做汉字校验啦。

UTF-8是什么呢?从百度百科贴了一段:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到4个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

说白一点,就是UTF-8就是相当于unicode的一种展现方式,而且所有字符集内的字符 对应着unicode都是有固定的编码的,也就是说GB18030中所有的字符都可以对应到unicode的编码,这样我们如果采用UTF-8字符集也就可以实现全汉字的一个展现;

解决方案:

只要将GB18030中的汉字对应到unicode中的代码区域,在校验字符串时,看该每个字符是否在代码区域中,即可判断是否是属于汉字,补充说明一下GB18030,GB18030中的汉字对应的unicode的方式是不一样的,举例说明一下:

汉字 GBK(GB18030)编码 Unicode编码
D2BB 4E00
B6A1 4E01

一对应的unicode的编码是4e00,这样的对应关系GBK和GB18030中大概有2W多常用汉字

汉字 GB18030编码 Unicode编码 UTF-16编码

java校验中文姓名合法性(需要支持生僻字与分隔符·)相关推荐

  1. 支持生僻字且自动识别utf-8编码的php汉字转拼音类,PHP汉字转拼音类(支持生僻字且自动识别utf-8编码)...

    这篇文章主要介绍了PHP汉字转拼音类(支持生僻字且自动识别utf-8编码),非常实用!需要的朋友可以参考下. 拼音类文件py_class.php源码如下: class py_class{ functi ...

  2. 各种正则校验规则:校验用户名正则,校验手机号,校验中文姓名,校验英文姓名,校验数字,校验银行卡,校验身份证号码,校验时间格式,校验 email(邮箱)

    火车车次 /^[GCDZTSPKXLY1-9]\d{1,4}$/ 手机机身码(IMEI) /^\d{15,17}$/ 必须带端口号的网址(或ip) /^((ht|f)tps?:\/\/)?[\w-]+ ...

  3. mysql utf-8不支持生僻字_关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析...

    1.问题:mysql 遇到某些中文插入异常 最近有同学反馈了这样一个问题: 上述语句在脚本中 load 入库的时候会 hang 住,web 前端.命令行操作则要么抛出 Incorrect string ...

  4. java校验身份证的合法性

    一.判断身份证合法性的规则 1.首先先科普一下身份证号码的数字代表什么? 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和 ...

  5. java校验身份证的合法性、根据身份证获取生日等工具类

    文章目录 一.校验15位或者18位身份证的合法性 二.从身份证号中反向获取生日.性别等信息 一.校验15位或者18位身份证的合法性 import java.text.ParseException; i ...

  6. Java校验银行卡号的合法性以及根据银行卡号校验银行卡所属的银行名称是否一样?

    需求: 用户填写开户银行,银行卡号和姓名, 验证卡号格式, 以及卡号是否属于该银行. 注: ( 亲测有效 )     本文是使用工具类来校验, 并没有调用第三方接口来实现. /*** 银行卡校验工具类 ...

  7. php验证中文姓名,我想在表单验证中加入中文姓名合法性模糊匹配判断?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 刚开始只是想检验一下输入的是不是中文,后来学了正则表达式后,想尝试一下,把常见的姓氏通过字符串判断的形式,主要是对姓氏进行验证,当然还有输入长度,可我对自 ...

  8. Java将中文姓名转换为拼音

    代码如下: 1 import net.sourceforge.pinyin4j.PinyinHelper; 2 import net.sourceforge.pinyin4j.format.Hanyu ...

  9. php表单中姓名必须使用汉字,我想在表单验证中加入中文姓名合法性模糊匹配判断?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 刚开始只是想检验一下输入的是不是中文,后来学了正则表达式后,想尝试一下,把常见的姓氏通过字符串判断的形式,主要是对姓氏进行验证,当然还有输入长度,可我对自 ...

最新文章

  1. CVPR2019目标检测论文看点:并域上的广义交
  2. 【ACM】杭电OJ 1003。
  3. 为什么局部内部类和匿名内部类只能访问 final 的局部变量?
  4. crc16 modbus php代码,crc16 - 产生Modbus RTU格式的CRC码
  5. .net生成随机字符串
  6. hotspot jvm_在Hotspot JVM中跟踪过多的垃圾收集
  7. 作者:蓝梦微, 女, 中国人民大学信息学院博士生,CCF学生会员。
  8. 飞鸽传书:webbrowser 本生是一个控件
  9. 太任性!17 岁少年买不到回国机票,因“泄愤”找黑客攻击系统,被判刑 4 年...
  10. 硕博经验——科研论文阅读与写作实战技巧
  11. Koding VM 配置nginx 小记
  12. 通过字符创调用接口中实现类的方法,SpringBean自动注入,
  13. matlab肌电信号hz低通滤波器,燕山大学 数字信号处理 课程设计 肌电信号 Matlab 程序汇总...
  14. 电流、电压、功率的计算方式
  15. PDFjs的使用说明书
  16. 海康威视rtsp转rtmp
  17. BGP学习笔记更新版
  18. java 除法运算,向上与向下取整和四舍五入
  19. GIT 知识收集-GIT banch 没有显示
  20. Gradle本地化构建技巧之自定义Gradle配置文件

热门文章

  1. 数据结构与算法-二叉树
  2. 计算机怎样发现路由器上u盘,360 P2 无线路由器通过电脑终端查看路由USB存储设备操作流程 路由器...
  3. 一个公司存在不同职位,不同职位计算工资的方法也不相同。工资可能是固定的,也可能根据销售额或工作量来计算。假设公司有三种职务:经理、计件工人和计时工人:他们的工资组成分别为:
  4. 代码 比较工具 在线
  5. 一文带你了解 sensor
  6. Android之使用HttpPost提交数据到服务器(Android手机客户端和后台服务器交互)
  7. JAVA工作日历天数(工作日/非工作日)- 基于法定节假日
  8. 关于家庭小型无线网络信号不稳定的说明
  9. 行业缩减他却增加!海尔智家研发投入创新高
  10. Eclipse报错DataIntegrityViolationException异常解决办法