首頁 >後端開發 >PHP問題 >php oracle亂碼怎麼辦

php oracle亂碼怎麼辦

藏色散人
藏色散人原創
2020-07-25 10:10:452951瀏覽

php oracle亂碼的解決方法:先透過PLSQL執行「select * from V$NLS_PARAMETERS;」取得oracle的字元集;然後在客戶端正確的設定服務端的字元集資訊即可。

php oracle亂碼怎麼辦

推薦:《PHP教學

PHP Oracle 中文亂碼問題

    通常缺省設定連接Oracle在處理中文時都會遇到亂碼問題,其實絕大部分人都知道在客戶端連接Oracle服務端前首先要在客戶端正確的設定服務端的字元集訊息,透過PLSQL執行「select * from V$NLS_PARAMETERS;」 即可取得oracle的字元集,變數NLS_CHARACTERSET對應的就是我們需要的字元集,例如我這裡就是「WE8ISO8859P1」

設定字元集的方法如下:

   方法一: 連接前設定環境變數            

putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
$conn=oci_new_connect($config['username'], $config['password'],$config['database']);

 

# 相關介紹:

Oracle一般指甲骨文公司;

相關介紹:

Oracle一般指甲骨文公司;

#甲骨文公司,全稱甲骨文股份有限公司(甲骨文軟體系統有限公司),是全球最大的企業級軟體公司,總部位於美國加州的紅木灘。 1989年正式進入中國市場。 2013年,甲骨文已超越 IBM ,成為繼 Microsoft 後全球第二大軟體公司。

方法二:連線時設定環境變數

$conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1');

 

####    但是很快你會發現透過上述設定讀取的中文資料在不設定編碼的情況下方可以正常顯示,而一旦在頁面(假如頁面的字元集為UTF8)中使用則仍為亂碼,###### 並且即便做轉換從we8iso8859p1 -> utf-8  依舊為亂碼。 ######     其實仔細研究後發現oci8 以資料庫編碼WE8ISO8859P1取得資料後自動轉換為作業系統缺省的編碼格式,假如我所使用的作業系統缺省編碼為GBK,則實際上透過OCI8讀取後,字元的編碼即為GBK, 因此在頁面使用的時候編碼轉換應該為  從GBK -> utf-8 :######  ###
echo iconv('GBK','utf-8',$vo["USERNAME"]);

以上是php oracle亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn