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.vbseamall.com】 |