最近工作中,时不时有用户输入自己真实姓名,然后申请银行提款时候,遇到一些特殊字符。而输入错误,提款失败!其中最多就是少数名字,姓名中的点字符。如:某某·李四,经常有人输入:某某.李四 或 某某・李四。其中:”·・” 这2个中间点很容易输入错误。都是中间点,一个大一个细。
-
那一个才是中文姓名中间点呢?
作为技术开发人员,我们有办法知道,到底那个点才是中文中间分割点。因为,这些都是常见姓名字符,因此,我们只要检测下,这2个字符对应在gb2312字符集中,字符编码即可。对于计算机而言,无论多怪的字符,看起来还怎么像,其实计算机本质去区分,是按照字符在字符集中,对应编码(字符编码)来保存、传输的。 因此,作为技术人员,只要能够判断字符在字符集中编码,就能知道对应字符是不是相同的。
从上面看,在gb2312中,第一个字符编码是a1a4,第二个字符返回是%3F,这个是”?”,其实意思是,该字符在这个字符集gb2312中找不到,就默认返回”?”,经常做大字符集,转小字符集合时候常遇到。毫无疑问,我们可以确定第一个字符才是姓名中分隔符,第二个只是看起来更象中文分隔符字符而已。后来查询,发现,其实”・”是日文中的分隔符。通过这种方法,我们其实很容易通过程序就可以查出真假“李逵”啦!
-
怎么样快速输入相似字符呢?
对于技术人员,已经知道怎么样辨别真假李逵了。 那么,如果有些自己常见的字符,我要去输入,我该怎么样去做呢?查询输入中文姓名中间点,方法很多。
1、智能ABC状态,直接按“`”键盘
2、五笔输入法按,shiftv+ @键
……
这里省略N多方法,方法都能很快打印出字符,但是都有各自前提条件,都跟需要安装输入法有关系。如果,选择错误输入法,又很容易将相似字符输入进入。对于,普通用户,还是很难区分。
我们必须找个,统一输入法,无论什么用户都可以正确输入!
我们知道目前最大字符集是unicode,也叫万国码,里面可以存储100多万字符,而且几乎所有字符集中,字符都在该字符集中能够找到,那么,我们只要知道字符在该字符中编码,就可以唯一确定一个字符。 对于windows而言,目前可以快速输入unicode码字符,只需要打开锁定数字键,按住:alt + unicode字符位置编码数字(小键盘) 即可。
如:我们发现”·” 字符unicode编码是 183,因此只要打开数字锁定键,按住alt + 小键盘输入183 松开alt即可。问题似乎变成了,怎么样知道字符的unicode编码了。
-
怎么样知道字符unicode编码?
unicode由于字符非常多,因此,常有几种实现模式,utf-8,utf-16等。都是unicode字符集一种存储编码方式。我们只需要将任意字符转换到utf-32编码即可,utf-32每个字符用4个字节表示。结果,跟unicode值一致。只是都占用4个字节而已。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php ///当前文件选择utf-8字符集 /** *得到字符的unicode字符编码值* * @author QQ:8292669 * @copyright http://blog.chacuo.net * @param string $char 传入单字符 * @return int 10禁止字符值 */ function getUnicodeDec($char) { $c = iconv("utf-8","utf-32BE",$char); ///得到4个16进制字节 return array_pop(unpack('N',$c)); ///16进制转换为10机制 } echo "·", getUnicodeDec('·'),"\r\n"; echo "・", getUnicodeDec('・');
从上面,我们可以看到一个用alt+183,一个用alt+12539输入。 这样看起来输入很难记住,不过,如果某个人自己姓名刚好有特殊字符,这种方法是个不错选择。你只要记住自己姓名特殊字怎么输入就行。记住后,以后无论那个电脑上面,就可以准确无误输入。呵呵,是个不错的选择!如果,我姓名里面,有难打字符。要输入:程默,分别是:alt +31243,alt + 40664 就可以了。
后记:从技术角度分析下,其实我们遇到这类问题,都可以方便甄别,也可以有个一劳永逸的办法。当然,没有特殊难输入字符,完全没有必要去记录编码啦。 好了,就这里,欢迎朋友们交流!
作者:程默的博客 QQ:8292669
原文网址:http://blog.chacuo.net/174.html
订阅保持关注:http://blog.chacuo.net/feed
本文版权归作者所有,欢迎转载,请务必添加原文链接。