php連接mssql顯示中文時(shí)為亂碼主要是因?yàn)榫幋a問(wèn)題了,我們只要懂得一對(duì)于數(shù)據(jù)庫(kù)與頁(yè)面的編碼統(tǒng)一處理就可以解決了,下面一起來(lái)看看下文。
因?yàn)橐恢痹谑褂?windows 下的 php 開(kāi)發(fā),用的是 mysql 數(shù)據(jù)庫(kù),偶爾也會(huì)遇到查詢(xún)記錄的亂碼,那是因?yàn)?php 編碼不支持中文進(jìn)行導(dǎo)致的,直接將其進(jìn)行編碼解碼即可解決,所以在 windows 平臺(tái)下還是比較容易解決的。
今天在幫一個(gè)客戶(hù)進(jìn)行 liunx 下維護(hù) mssql 數(shù)據(jù)庫(kù)的操作,因站點(diǎn)被攻擊的原因,一直無(wú)法進(jìn)行打開(kāi)站點(diǎn),折騰了很久,終于連接上mssql了,今天來(lái)了嘗試下查詢(xún),么問(wèn)題!
可是出來(lái)的記錄 中文 顯示是?號(hào)或者就是一堆黑框框,這是典型的編碼不對(duì),于是查看了下php.ini關(guān)于mssql的這一塊配置,發(fā)現(xiàn)有一項(xiàng)配置”mssql.charset”這一項(xiàng),我配置成 “utf8”,成功解決亂碼。
因?yàn)槲业某绦蝽?yè)面用的是utf8所以配置成這樣,如果是gbk/gb2312 就配置長(zhǎng)相應(yīng)的編碼就應(yīng)該能解決,當(dāng)然遇到這樣的問(wèn)題還是要看相應(yīng)情況的,這里還是建議如果能修改配置文件盡可能的去修改配置文件,因?yàn)檫@樣才能一勞永逸的解決掉問(wèn)題。
例子
代碼如下:
$servername = 127.0.0.1,1433;
$connectioninfo = array( uid=>sa,
pwd=>123456,
database=>nopcommerce,
characterset=>utf-8); // 這一行是重點(diǎn)
$conn = sqlsrv_connect($servername, $connectioninfo);
注意事項(xiàng):
編碼常用的是utf8-general-ci
不只是表要統(tǒng)一,要統(tǒng)一的總共有四處
一是:數(shù)據(jù)庫(kù)類(lèi)型,其中包括,數(shù)據(jù)庫(kù),表,字段三處都要統(tǒng)一,可以檢查一下
二是:文件的編碼類(lèi)型,你若用dw或editplus可以查看頁(yè)面編碼,不同需修改
三是:訪問(wèn)數(shù)據(jù)庫(kù)時(shí)的設(shè)置既set names utf8;
四是:瀏覽器顯示方式,添加meta屬性
不管用gbk,gb2312,這四處必須統(tǒng)一,看你缺少了哪一步
用php操作mssql比在asp連接mysql要簡(jiǎn)單,所以,當(dāng)需要mssql與mysql并存時(shí),用php連接mssql來(lái)操作mysql與mssql并存比較簡(jiǎn)單好用.如果是asp連接mysql,需要安裝一個(gè)mysql驅(qū)動(dòng),默認(rèn)windows的odbc沒(méi)有安裝,很遺憾...
1.在web服務(wù)器上至少安裝了mssql的客戶(hù)端
2.打開(kāi)php.ini把;extension=php_mssql.dll前面的分號(hào)去掉
有必要話:需要制定extension_dir
3.推薦使用php<=4.0.9<=5.0.3目前我還沒(méi)有連接成功過(guò)4.010和5.0.3
4.數(shù)據(jù)庫(kù)的連接分頁(yè)可以到phpe.net上獲取到相應(yīng)的class