這篇文章主要介紹了php如何連接oracle設(shè)置編碼,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、溪湖網(wǎng)站維護(hù)、網(wǎng)站推廣。
php連接oracle設(shè)置編碼的方法:首先獲取oracle的字符集;然后設(shè)置PHP代碼為“oci_connect("scott", "tiger", $db, 'zhs16gbk');”即可。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
php連接oracle怎么設(shè)置編碼?
php連接oracle設(shè)定字符集,避免亂碼
數(shù)據(jù)庫(kù)用oracle,當(dāng)php連接oracle的時(shí)候,最好指定字符集。
查PHP手冊(cè),oci_connect的第四個(gè)參數(shù)為charset,這是關(guān)鍵。
首先獲取oracle的字符集,運(yùn)行“select * from V$NLS_PARAMETERS;”,變量NLS_CHARACTERSET對(duì)應(yīng)的就是我們需要的字符集,比如我這里就是“ZHS16GBK”。所以,最終的PHP代碼為:
Php代碼
$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk'); $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
我本地的PHP文件統(tǒng)一用utf-8,所以,獲取的代碼還要經(jīng)過(guò)如下編碼轉(zhuǎn)換:
Php代碼
while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); } while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); }
--------------------------------
更新
--------------------------------
同事說(shuō),Oracle可以按照 客戶端指定的字符集 提供數(shù)據(jù)。也就是說(shuō),如果我本地PHP文件用UTF-8,那么,我在oci_connect的時(shí)候,直接指定utf-8就行了,連編碼轉(zhuǎn)換都省了。
Php代碼
$c1 = oci_connect("scott", "tiger", $db, 'UTF8'); $c1 = oci_connect("scott", "tiger", $db, 'UTF8');
另外,有個(gè)奇怪的問(wèn)題:前面編碼轉(zhuǎn)換的iconv在測(cè)試機(jī)環(huán)境正常,但是傳到遠(yuǎn)程就不能正常解析了,后來(lái)?yè)Q成了mb_convert_encoding就可以了,代碼如下:
Php代碼
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk'); $nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');
可能原因在于iconv里面的第二個(gè)參數(shù)是否加了“//IGNORE”,請(qǐng)參考http://cn2.php.net/manual/en/function.iconv.php。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php如何連接oracle設(shè)置編碼”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!