本帖最后由 woshimajia0005 于 2010-07-01 13:52:07 编辑

解决方案 »

  1.   

    $str = '上海';
    $ss = new StrFormat_Ascii();
    echo $ss->encode($str);
    //======================
    //那个类只能是转换utf-8格式的,与老大的那个的差别也在前个帖子里说了。
    //都是需要转换编码的。
    //这里正确是因为你的PHP页面的文档编码本就是UTF-8的,所以不用转换,直接就可以。$str = $_GET['str'];
    $ss = new StrFormat_Ascii();
    echo $ss->encode($str);
    //=======================
    //而这里不可以,应该是因为你前台页面的编码不是utf-8,所以$_GET['str'];得到的字符串也不是utf-8的,所以这里就需要用iconv转码了,
    //如你页面编码是gb2312,则
    $str = iconv("GB2312","UTF-8",$_GET['str']);
    $ss = new StrFormat_Ascii();
    echo $ss->encode($str);
      

  2.   

    最好的就是你页面的编码也用utf-8格式的,就不用转了,不过改页面的编码也会涉及到数据库的编码,也就是要统一编码。
    一般来说,建议都用utf-8的编码,一是它更通用,二是在PHP里有些内置函数的处理上,都会直接支持utf-8的编码,而不用做特殊处理,比如有的图片处理等函数,就不能直接用gb2312的字符,而需要转码为utf-8。
    当然还有其他地方也会有这种情况。而又不会有错误出来,很难找出来问题所在。