[PHP]利用ODBC連接Sybase 8並解決中文big5問題

windows要用php連接Sybase可以使用php_sybase_ct.dll,只需有這個dll並把c:\windows\php.ini裡的;extension =php_sybase_ct.dll前面那個分號拿掉,就可以像使用mysql一樣使用Sysbase資料庫了,詳細可以參考以下:

sybase_connect("svname","root","passwd")
//跟mysql用法是一樣的
mysql_connect("svname","root","passwd")

不過在舊的版本上似乎連線不上,也可能是設定不對,所以最後選擇了使用ODBC來解決這個連線的問題,不過因為ODBC連接Sysbase 8預設取得的資料是big5的內容,所以需要再經過其它處理來使其產生網頁內容時變成utf-8。

底下是PHP利用ODBC連接資料庫,並且輸出成utf-8的網頁格式:

PHP利用ODBC連接資料庫,並且輸出成utf-8的網頁格式

如果沒有處理的話輸出是中文的亂碼

沒有處理Sybase的話輸出是中文的亂碼

方法十分簡單,首先需要在ODBC上設定輸出的編碼為cp950,也就是中文編碼,資料庫存取時編碼才會一致

可以控制台選擇資料來源(ODBC)

控制台選擇資料來源(ODBC)

然後選擇新增,Driver的部份選擇Adaptive Server Anywhere 8.0

Driver的部份選擇Adaptive Server Anywhere 8.0

給於ODBC的名稱

給於ODBC的名稱

設定要連入Sysbase的帳號及密碼

設定要連入Sysbase的帳號及密碼

設定Sybase的Server Name

設定Sybase的Server Name

這裡是重點,Character set的部份要設cp950,中文語系

Character set的部份要設cp950,中文語系

Network使用可依建立Sybase時的方式來決定

Network使用可依建立Sybase時的方式來決定

再來建立php文件,記得編碼是utf8的文件編碼,而且html的meta Content-Type也要設定charset是utf-8

這張圖右上方可以看到meta是utf8,下方toolbar可以看到編碼是utf8的檔案格式

中文字的轉換是利用function iconv,iconv(來源編碼,轉換編碼,來源字串)

右上方可以看到meta是utf8,下方toolbar可以看到編碼是utf8的檔案格式

如此就可以連接Sybase 8,並取得utf8編碼的中文字了。

發表迴響