win7里面 添加了一些特殊的字 比如【叱 Unicode:0x20B9F】,把他直接复制到oracle里面,就成乱码了。所以我想在画面上输入这类字的话就给判断出来,然后禁止输入这些字。
php里面如何判断出来这个字?
请高手,给出来代码示例。谢谢

解决方案 »

  1.   

    20BF9是unicode汉字extent B,范围是20000-2A6DF非常用汉字还有extent A、C、D等……两种方法,视乎你的数据库编码支持
    1.像上面说的,知道unicode的16进制码,排除不适合的
    2.iconv('UTF-8', 'GBK//IGNORE', 字串)   //IGNORE参数能将不能转换GBK的字符去掉,你反向转换一次,对比就能得出相关字符,或者参考下面
    public function getNotLocaleChars($text, $unicode='UTF-8', $locale='GBK')
    {
    $transText1 = iconv($unicode, $locale.'//IGNORE', $text);
    $transText2 = iconv($locale, $unicode, $transText1);
    $transCharsArr2 = preg_split('##u', $transText2, -1, PREG_SPLIT_NO_EMPTY);
    $transCharsArr1 = preg_split('##u', $text, -1, PREG_SPLIT_NO_EMPTY);
    $charsArr = array_diff($transCharsArr1, $transCharsArr2);

    return $charsArr;
    }
    这是我自己用的一个类里面的方法,求$text(unicode编码为参数二)里面不能转换ANSI(参数三)的字符,返回的是数组,每字符为一个单元(但无顺序关系)