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

 晶晶9930_195 发布于 2022-12-01 14:42

我们有个项目,由不同团队开发。一边用 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',
    ],
1 个回答
  • 自己找到方法了。作图记录。

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

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

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

    数据库配置:

    //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

    2022-12-01 14:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有