iconv可以做到的,lz好好研究一下。

解决方案 »

  1.   

    1楼的朋友,在PHP5的php.ini中有一块[iconv]的区域,这个应该如何配置啊。还有 iconv的N种方法小弟都试过了  要不你给我一个标准的方法?谢谢啊
      

  2.   

    php.ini里面不需要额外设置。
    使用
    $newstr = iconv('utf-8', 'gb2312', $oldstr); //utf-8别写成utf8
    即可。
      

  3.   

    1 楼的:你想说的是不是这样写:iconv ("UTF-8", "GB2312","我我");  不成功啊我在 php.ini 的[iconv] 中也这样配置了iconv.input_encoding=utf-8 
    iconv.output_encoding=gb2312
    不成功啊。只有一种情况是成功的。就是网页本身如果是 gn2312编码的 就成功。但是不是iconv成功还是本身就不需要转换。
      

  4.   

    //PHPURL编码转换 
    function   encodeURIComponent($text)   { 
        preg_match_all( "/[\x81-\xfe]?./ ",$text,$regs); 
        $rtext   =   " "; 
        foreach($regs[0]   as   $v)   { 
          $ch   =   iconv( "gb2312 ", "UTF-8 ",$v); 
          $rtext   .=   sprintf( "%%%02X%%%02X%%%02X ",ord($ch[0]),ord($ch[1]),ord($ch[2])); 
        } 
        return   $rtext; 
    } function   escape($str){ 
            preg_match_all( "/[\x80-\xff]. ¦[\x01-\x7f]+/ ",$str,$newstr); 
            $ar   =   $newstr[0]; 
            foreach($ar   as   $k=> $v){ 
                    if(ord($ar[$k])> =127){ 
                            $tmpString=bin2hex(iconv( "GBK ", "ucs-2 ",$v)); 
                            if   (!eregi( "WIN ",PHP_OS)){ 
                                    $tmpString   =   substr($tmpString,2,2).substr($tmpString,0,2); 
                            } 
                            $reString.= "%u ".$tmpString; 
                    }   else   { 
                            $reString.=   rawurlencode($v); 
                    } 
            } 
            return   $reString; 

    function   unescape($str)   { 
        $str   =   rawurldecode($str); 
        preg_match_all( "/(?:%u.{4}) ¦&#x.{4}; ¦&#\d+; ¦.+/U ",$str,$r); 
        $ar   =   $r[0]; 
        foreach($ar   as   $k=> $v)   { 
            if(substr($v,0,2)   ==   "%u "){ 
    if   (!eregi( "WIN ",PHP_OS)){ 
    $tmpString   =   "%u ".substr($v,4,2).substr($v,2,2); 

                $ar[$k]   =   iconv( "UCS-2 ", "GB2312 ",pack( "H4 ",substr($tmpString,-4))); 
      } 
            elseif(substr($v,0,3)   ==   "&#x ") 
                $ar[$k]   =   iconv( "UCS-2 ", "GB2312 ",pack( "H4 ",substr($v,3,-1))); 
            elseif(substr($v,0,2)   ==   "&# ")   { 
                $ar[$k]   =   iconv( "UCS-2 ", "GB2312 ",pack( "n ",substr($v,2,-1))); 
            } 
        } 
        return   join( " ",$ar); 
    } 看看有没你需要的
      

  5.   

    感谢各位的回答,我觉得我还没有把问题说清楚。如下是问题的完整:数据库中有表 A  整理(或校对) 是 latin1_swedish_ci(表中的字段同样)有一个C++ 的程序要读这个表现在网页是 utf-8我在phpmyadmin中(当网页编码是GB2312时)  往 A这个表中的某字段输入中文后 ,此程序能够正确读取中。我认为:我在该表中是用了gb2312的编码输入的。
    现在,我想在网页上生成数据然后输入到该表中,因为网页是 UTF8编码 所以我想到编码转换。 不知道我的思路对不对然后我就问了以上的问题。希望高手回答一下
      

  6.   

    你的数据库不是写成了一个类吗?
    例如, mysql_query($sql) 写成类 $db->query($sql).类 $db 中的 query() 这样定义:function query($sql){
        return mysql_query(iconv("utf-8","gb2312//ignore",$sql));
    }$db->query($sql) 查询的时候,自动会转成 gb2312 码再查询
      

  7.   

    另外,如果是 5.1 以上的数据库,是支持多种编码的,根本就不用那么麻烦...
    把表的编码转为 utf8_general_ci在网页中, 查询之前执行 set names 'utf-8'
    在C++中, 查询之前执行 set names 'gb2312'