我从网上下了一个转换函数和字库,用它的测试是正确的。可是转换页面返回来的汉字就错误了。例如页面输入:李强,程序得到的好像是:鏉庡己。结果拼音就成了:_shou__yi__ji_是不是先要判断进来的字符编码,再编码转换,再转为拼音? 具体应该怎么转换?

解决方案 »

  1.   

    编码问题,看样子你的输入是utf8,我以前也用过转换库,要求用gb的
      

  2.   


    是GBK,还是gb2312 ? 页面来的是utf8 ?
      

  3.   

    gbk才能转化为拼音,,看看我的.
    http://hi.baidu.com/jlzan1314/blog/item/8dfc3bed328c183726979191.html
      

  4.   

    我刚才从网上抄来一个,先作转换,再转换拼音就对了。
    不过,这个函数好像是转到GB2312,竟然也对了。是巧合吗?是否必须GBK?另外, jlzan1314 博客里的 function g(),是编码转换到GBK吗?function _U2_Utf8_Gb($_C)
    {
    $_String = '';
    if($_C < 0x80) $_String .= $_C;
    elseif($_C < 0x800)
    {
    $_String .= chr(0xC0 | $_C>>6);
    $_String .= chr(0x80 | $_C & 0x3F);
    }elseif($_C < 0x10000){
    $_String .= chr(0xE0 | $_C>>12);
    $_String .= chr(0x80 | $_C>>6 & 0x3F);
    $_String .= chr(0x80 | $_C & 0x3F);
    } elseif($_C < 0x200000) {
    $_String .= chr(0xF0 | $_C>>18);
    $_String .= chr(0x80 | $_C>>12 & 0x3F);
    $_String .= chr(0x80 | $_C>>6 & 0x3F);
    $_String .= chr(0x80 | $_C & 0x3F);
    }
    return iconv('UTF-8', 'GB2312', $_String);
    }
      

  5.   

    本地测试这样通过了,以后不同用户输入的话,是不是要先判读是不是 UTF编码? 怎么判读? 
      

  6.   

    有mb就很方便了
    mb_convert_encoding($str, 'GBK', 'UTF-8');
    编码根据你页面的,你页面什么编码提交的数据就是什么,和你页面编码不同的数据多半是伪造的,灌水机之类有的会不管编码