问个数据库转换问题

#1 azwl

我需要把mssql2000的数据表导到mysql
写了如下程序
 
     function convert(){
        $fromdsn = 'mssql:host=192.168.1.20;dbname=mybase';
        $fromdb = new PDO($fromdsn, 'sa', '');
        $fromdb -> query('set names utf8');
        $stmt = 'SELECT top 100 * FROM cl_jihua';
        $rs = $fromdb -> query($stmt);
        while ($row = $rs -> fetch()){
            $rows[] = array(
                'lb' => $row[1],
                 'bz' => $row[2],
                 'rq' => date('Y-m-d', strtotime($row[3])),
                 'mc' => $row[4],
                 'gg' => $row[5],
                 'gys' => $row[6],
                 'dw' => $row[7],
                 'sl' => empty($row[8])?0:$row[8],
                 'dj' => empty($row[10])?0:$row[10],
                 'pzsl' => empty($row[9])?0:$row[9],
                 'wcsj' => $row[11],
                 'zs' => $row[12],
                 's1' => $row[13],
                 's2' => $row[14],
                 's3' => $row[15]
                );
        }
            dump($rows);
       //    exit;
            spClass('Mcljh') -> createAll($rows);
            echo date();
         }


转换到mysql中时字符字段乱码。用dump($rows)时,浏览器显示的是对的,问题出在哪里?

2010-04-25 18:21:52

#2 jake

两个方面检查:1. mysql内字段的编码是否UTF8,2. mssql2000好像是默认GB2312的,所以在转库的时候,要在有汉字的字段上,直接进行一次转换iconv("GB2312", "UTF-8",原字符串)

2010-04-25 19:32:24

#3 azwl

谢谢,解决了。

2010-04-25 20:17:27