共计 527 个字符,预计需要花费 2 分钟才能阅读完成。
这个需求是源于使用 LATEX 排版中文时出现的。CJK 宏包对中文字体的支持比较麻烦,已经不再推荐使用,但是,一些老项目还在用,不想动它。
CJK 自带的 UTF- 8 编码字体 gbsn 和 gkai 只包含 GB2312 字符集,这就导致有些生僻字会出现无法显示的情况。
对于一些检测报告,要是姓名有生僻字没有显示出来的话,这会导致很严重的后果。所以想要有个预警机制,判断姓名里面是否包含生僻字,也就是判断一个汉字是否在 GB2312 汉字编码字符集里面。
iconv 函数
用于在不同字符编码之间进行转换,可将一个字符串从一种字符编码转换成另一种字符编码,比如将 UTF- 8 编码的字符串转换成 GBK 编码的字符串。
错误控制运算符 @将屏蔽 iconv 函数可能产生的 notice 提示。
实现代码
<?php
function isGB2312($char) {if (@iconv('UTF-8', 'GB2312', $char)) {echo $char . ":在 GB2312 里面 \n";} else {echo $char . ":不在 GB2312 里 \n";}
}
$char = " 就 ";
$char2 = " 甦 ";
isGB2312($char); // 就:在 GB2312 里面
isGB2312($char2);// 甦:不在 GB2312 里
正文完