Linux下用freetds連接mssql中文亂碼的問題 |
發(fā)布時間: 2012/8/17 17:37:26 |
php5.3的情況下,用pdo的dblib驅(qū)動無法連接mssql的,根據(jù)官方的描述,5.2已經(jīng)修改這個bug,5.3沒有。 用php自帶的mssql函數(shù)可以的。編譯freetds,php_mssql,pdo_dblib參數(shù)如下: ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/ 用自帶mssql函數(shù)無法設(shè)置字符集,set names 不被支持,最后參考了adodb的代碼,發(fā)現(xiàn)解決這個問題還得用com,或者用ative mssql driver, 這兩東西在windows下可以,linux還是不大好使的。解決辦法是編輯/usr/local/freetds/etc/freetds.conf 另外php.ini 里面mssql.charset 是不需要設(shè)置的,其實(shí)說得很清楚: 當(dāng)FreeTDS的client charset 為空或者沒有設(shè)置的時候才需要設(shè)置這個。曾經(jīng)錯誤的將這里設(shè)置成utf-8,F(xiàn)reeTDS的client charset 也設(shè)置成utf8,結(jié)果mssql_connect的時候就開始報(bào)錯了。最終結(jié)論,只需要設(shè)置FreeTDS的client charset 為GBK,然后在php的程序里面iconv('GBK', 'UTF-8//IGNORE', $str);一下就一切正常了。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |