osx写入sql server正常。linux写入sql server乱码。


我们有个项目,由不同团队开发。一边用 windows + .net + sql server 2008 ;另外一边用 linux + yii(php) + mysql 开发,现在用 yii 去连接 sql server ,开发环境的系统是 osx yii utf-8 sql server 上用 gbk

osx写入sql server正常。linux写入sql server乱码。

据说跟系统的locale有关!!!

求高手解答。

osx配置如下,utf8放下面会报错,不知道什么原因。


 'api' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'dblib:host=x.x.x.x;dbname=dbname;charset=utf8',
        'username' => 'username',
        'password' => 'password',
        //'charset' => 'utf8',
    ],

ubuntu配置如下,utf8放哪一样,程序运行正常,但是写入sql server会乱码。


 'api' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'dblib:host=x.x.x.x;dbname=dbname;charset=utf8',
        'username' => 'username',
        'password' => 'password',
        //'charset' => 'utf8',
    ],

sql-server dblib osx Ubuntu php

away35 10 years, 10 months ago

自己找到方法了。作图记录。

网络上的资料大部分是 freetds + PDO unixODBC ;因为我是用 yii2 的,不知道能不能用 odbc 没去试, yii2 的文档里用 freetds + PDO dblib ,我就用这个了。

先看osx环境,freetds是用命令安装的,再看下系统locale编码情况,然后验证下 tsql 连接和版本情况

clipboard.png

clipboard.png

clipboard.png

现在看下ubuntu环境,freetds是用命令 sudo apt-get install freetds-bin 装的,先看图。我的ubuntu服务器是阿里云的,查了系统locale,没有 zh_CN.UTF-8 的编码因此先安装这个,这个步骤网络上很多,晚点把链接贴在下面。看到第一张图的版本号是4.2,这是默认装的,为了解决乱码的问题,还要在配置文件里改成7.1,改变客户单编码为 UTF-8 ,去掉前面的 ; ,看图。

clipboard.png

clipboard.png

clipboard.png

clipboard.png

数据库配置:


 //osx
'api' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'dblib:host=x.x.x.x;dbname=dbname;charset=utf8',
        'username' => 'username',
        'password' => 'password',
        //'charset' => 'utf8', //放这报错
],

//ubuntu
'api' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'dblib:host=x.x.x.x;dbname=dbname',
    'username' => 'username',
    'password' => 'password',
    'charset' => 'utf8',
],

相关链接:

freetds: http://www.freetds.org/userguide/index.htm
freetds+PDO unixODBC: http://www.open-open.com/lib/view/open1405003628966.html
freetds+PDO unixODBC: http://aseity.blog.163.com/blog/static/16481711200702061211659/
freetds安装: http://www.jxm.cc/blogs/473.html
locate安装: http://www.kuqin.com/zhanz/20120219/318273.html
locale介绍: http://blog.csdn.net/rstevens/article/details/2025410

chen226 answered 10 years, 10 months ago

Your Answer