• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-25) 31次浏览 已收录 0个评论
文章目录[隐藏]

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

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

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

求高手解答。

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

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

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

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

/本2文来源[email protected]搞@^&代*@码2网搞gaodaima代码

回复内容:

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

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

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

求高手解答。

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

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

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

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

<body>

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

网络上的资料大部分是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,去掉前面的;,看图。

数据库配置:

<code>//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',],</code>

相关链接:

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.gaodaima.com/rstevens/article/details/2025410


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:osx写入sql server正常。linux写入sql server乱码。

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址