PHP判断一个汉字是否在GB2312汉字编码字符集里面

编程 · 2023-12-21 · 279 人浏览

这个需求是源于使用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里
PHP
Theme Jasmine by Kent Liao