Linux下用freetds连接mssql中文乱码的问题 |
发布时间: 2012/8/17 17:37:26 |
php5.3的情况下,用pdo的dblib驱动无法连接mssql的,根据官方的描述,5.2已经修改这个bug,5.3没有。 用php自带的mssql函数可以的。编译freetds,php_mssql,pdo_dblib参数如下: ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/ 用自带mssql函数无法设置字符集,set names 不被支持,最后参考了adodb的代码,发现解决这个问题还得用com,或者用ative mssql driver, 这两东西在windows下可以,linux还是不大好使的。解决办法是编辑/usr/local/freetds/etc/freetds.conf 另外php.ini 里面mssql.charset 是不需要设置的,其实说得很清楚: 当FreeTDS的client charset 为空或者没有设置的时候才需要设置这个。曾经错误的将这里设置成utf-8,FreeTDS的client charset 也设置成utf8,结果mssql_connect的时候就开始报错了。最终结论,只需要设置FreeTDS的client charset 为GBK,然后在php的程序里面iconv('GBK', 'UTF-8//IGNORE', $str);一下就一切正常了。 本文出自:亿恩科技【www.enkj.com】 |