Linux下用freetds连接mssql中文乱码的问题【参考2】

php5.3的情况下,用pdo的dblib驱动无法连接mssql的,根据官方的描述,5.2已经修改这个bug,5.3没有。

用php自带的mssql函数可以的。编译freetds,php_mssql,pdo_dblib参数如下:
 ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
./configure
--with-php-config=/usr/local/php/bin/php-config
--with-mssql=/usr/local/freetds --enable-pdo
--with-pdo-dblib=/usr/local/freetds/

用自带mssql函数无法设置字符集,set names
不被支持,最后参考了adodb的代码,发现解决这个问题还得用com,或者用ative mssql driver,
这两东西在windows下可以,linux还是不大好使的。解决办法是编辑/usr/local/freetds/etc/freetds.conf
加上一行client  charset   =   GBK, 设置成utf-8是不对的,因为mssql排序规则数据库默认设置是Chinese PRC,相当于gb2312,

另外php.ini 里面mssql.charset  是不需要设置的,其实说得很清楚:
; Specify client character set.
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS

当FreeTDS的client charset
为空或者没有设置的时候才需要设置这个。曾经错误的将这里设置成utf-8,FreeTDS的client charset
也设置成utf8,结果mssql_connect的时候就开始报错了。最终结论,只需要设置FreeTDS的client charset
为GBK,然后在php的程序里面iconv(‘GBK‘, ‘UTF-8//IGNORE‘, $str);一下就一切正常了。

时间: 2024-08-12 02:06:04

Linux下用freetds连接mssql中文乱码的问题【参考2】的相关文章

Linux下用freetds连接mssql中文乱码的问题【参考1】

由于工作原因我们需要通过php访问我们以前的Sql Server 2005数据,所以就有了这篇文章的诞生.废话就少说了,做程序设计的最不喜欢兜圈子了.用简介步骤说明问题,往下看.系统:   Linux数据库: Sql Server 2005 1.下载FreeTDS  官方网站:http://www.freetds.org  2.安装FreeTDS# tar zxvf freetds-current.tgz(解压)# ./configure --prefix=/usr/local/freetds

LINUX下使用PHP连接MSSQL的方法

目录[-] 如何安装MSSQL.SO 如何安装PDO_LIB.SO 如何安装PDO_ODBC.SO 作者:Roban lee ([email protected]) LINUX下使用PHP连接MSSQL的方法有很多种,根据不同的环境,可以选择不同的方式,大致方法有以下几种: 使用MSSQL.SO扩展 使用PDO_LIB扩展 使用PDO_ODBC扩展 如何安装MSSQL.SO 1. MSSQL.SO 扩展依赖一个外部包,即 freeTDS, FreeTDS 官网: http://www.freet

[转载] linux下打开windows txt文件中文乱码问题

原文链接 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv命令,如乱码文件名为shujujiegou.txt,那么在终端输入如下命令: iconv -f gbk -t

linux下 采用freetds 连接sqlserver2008

我主要参考了官方文章 要注意的几点 1.编译freetds(需要下载)的时候,请先添加--prefix=安装目录  --with-tdsver=7.1  //这个必须在7.0以上的 来自官方文档 ./configure  --prefix=/opt/freetds  --with-tdsver=7.1 2.另外php连接的时候还需要添加pdo_dblib(除了这个之外还有其他2种方式) 3.编译pdo_dblib的时候 一定要指定freetds安装目录,否则会连不到 参数如下 ./configu

linux下打开windows txt文件中文乱码问题 (转载)

转自:http://blog.csdn.net/imyang2007/article/details/7448177 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv

解决在Linux下安装Oracle时的中文乱码问题

本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 操作系统:Red Hat Enterprise Linux 6.1数据库:Oracle Database 11g R2 方法一:逃避法,改用英文界面安装 [[email protected] ~]# su - oracle    [[email protected] ~]$ export LANG=en_US.UTF-8    [[email protected] ~]$ cd /var/ftp/pub/database/ 

linux下javadoc生成文件出现中文乱码

javadoc命令的正确使用姿势 javadoc -d apidoc -windowtitle Testing -doctitle 'The API of javadoc' -header 'My class' -charset UTF-8 -author -version *.java 注意 使用-author和-version是因为javadoc默认不提取这两个信息 增加-endoing UTF-8选项可使代码文件编码也更改为UTF-8 版权声明:本文为博主原创文章,未经博主允许不得转载.

Linux下打开Windows环境下创建的文本文件显示中文乱码问题

产生原因: Linux下打开Windows环境下创建的文本文件出现中文乱码,因为两种操作系统的中文压缩方式不同,在Windows环境下中文编码一般为GBK,而在Linux环境中为UTF-8,这就导致了在Windows下能正常显示的文件在Linux环境下打开出现了乱码. 解决方法: 使用iconv命令, 命令语法:iconv -f fromcode [-cs] [-t tocode [file ...] 假设乱码文件名为Hello.c,那么在终端可使用如下命令进行格式转换: iconv -f GB

linux下配置php扩展mssql

前言:linux下配置php扩展mssql,使php通过mssql工具实现和远程win SQL server数据的传递. 有两种方法: 一.第一次编译php时提供mssql支持,即在编译参数上加上--with-mssql=/path 二.对于己安装的php,需把mssql当成一个模块,编译php使其支持,本文主要讲解这种方法: 1.安装配置freetds 下载源码包,并编译安装 #wget  tp://ibiblio.org/pub/Linux/ALPHA/freetds/stable/free