求解:linux下通过perl 连接windows中的sqlserver 写数据时出现乱码

求解:linux下通过perl 连接windows中的sqlserver 写数据时出现乱码

sub addUserToSqlserver{
                $dbh=DBI->connect('dbi:ODBC:dsn','sa','123');
                $dbh->do("SET character_set_client='gbk'");
                                           $dbh->do("SET character_set_connection='gbk'");
                my $sth=$dbh->prepare("select user from [LDAP_USER] where linzhengcode='$user'");
                $sth->execute();
                if(@data=$sth->fetchrow_array()){
                        open(NEWFILE,">test001.debug")||die "open file failed:$!";
                        print NEWFILE "The username is  in used;"
                        }else{
                                open(newfile,">>test00111")||die "open file failed:$!";
                print newfile $username1;
                close newfile;       
                my $sah=$dbh->prepare("insert into [LDAP_USER] (shenfeng,username,linzhengcode,password) values('$serizeid','$username1','$user','$regPassword')");
                $sah->execute();
        }




系统LANG是zh_CN.GB18030. freetds.conf中也设置了GB18030 但是写数据库始终都是乱码,username那个字段. 上面是程序的一部分.望高手解答

...

这么久了 都没人知道么

...

一直没处理.今天在看了下  发现真正执行sql语句的是freetds里面的 isql命令. 我试着用isql执行 结果在数据库中果然是乱码 用tsql就行.所以问题的根本肯定是在isql上面,谁知道怎么设置下编码 才能保证isql执行的时候不会是乱码呢
错了 是unixODBC里面的isql
我都是连mysql
毕业了。。。

..

问题解决了,今天想起来还是回下贴 防止以后有类似的问题也好有个解决办法,  其实就是配置文件的问题.unixODBC 和 freetds里面的配置文件 有2种配置方式. 但是只有一种可以保证编码统一