终于可以给300分了循例发个小东西
class unicodeString
{
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;
}...
使用实例
$obj = new unicodeString();$str = 'hdshfhkdfs中文字典ㅏㅁ이ㅓㅣ잊';//获取编码为“参数2”的字串“参数1”中,不能转换为“参数3”编码的字符,输出为数组;
//参数2 省略时默认为“UTF-8”,参数3 省略时默认为“GBK”
$charArr = $obj->getNotLocaleChars($str,'utf-8', 'gbk');var_dump($charArr);//if (0===count($charArr)) $str 为完全本地“参数3”组成的字串80楼或帖子沉到第二版结贴

解决方案 »

  1.   

    $transText1 = iconv($unicode, $locale.'//IGNORE', $text);//utf-8转gbk,不能转换就跳过
    $transText2 = iconv($locale, $unicode, $transText1);//再转回utf-8
    $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);//提取差异只有utf-8中的2字节部分不能被转换成gbk吧?
      

  2.   

    不是的,你试一下就知道了,而且不限于utf-8的,视乎$str本身的编码是什么这个只是应用iconv,不是使用unicode本身的编码原理,所以实际能做到什么程度要看php的iconv支持程度
      

  3.   

    只不过utf-16le/ucs2……之类的字串这里“直观地”贴不出来,我才用utf-8的例子
      

  4.   

    这办法有趣,可用于cms后台录稿。
      

  5.   

    完全米看懂的飘过~~初接触PHP~
      

  6.   

    以前总是被编码搞的很乱   现在基本都用UTF-8了  ..但还是收藏了 呵呵
      

  7.   

    http://topic.csdn.net/u/20121101/11/f70ea71b-7e43-43b9-9f8c-77e2ab943177.html此贴求大侠指导啊