php連接oracle亂碼的解決方法:1、設定環境變數;2、取得oracle的字元集;3、透過「iconv('GBK','utf-8',$vo["USERNAME" ]);”方法轉換編碼即可。
本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦
如何解決php 連線oracle亂碼問題?
PHP 連線Oracle及亂碼問題筆記
#1. PHP連線Oracle
步驟1. 擷取Oracle Instant Client核心DLL
從OTN 的Instant Client 頁面下載用於Windows 的Instant Client Basic(11g) 套件。此壓縮檔案的大小約為 48MB。建立子目錄(例如,c:\instantclient11_2),然後從壓縮檔案複製以下函式庫到apache\bin目錄下:
oraociei11.dll orannzsbb11.dll oci.dll
這三個檔案的總大小大約是 126MB。
要使用 PHP 舊版的「oracle」擴充(在 php.ini 中使用「extension=php_oracle.dll」啟用),則複製 ociw32.dll 而非 oci.dll。
步驟2:編輯環境變量,將 c:\instantclient11_2 加入 PATH 中(系統環境變數位於其他 Oracle 目錄之前)。
例如,在Win7 上,依序點選“電腦”->右鍵“屬性”->“進階系統設定”->“進階”->“環境變數”,編輯系統變量清單中的PATH。
如果使用了 tnsnames.ora 檔案定義 Oracle Net 服務名稱,則將 tnsnames.ora 複製到 c:\instantclient11_2,並將使用者環境變數 TNS_ADMIN 設為 c:\instantclient11_2。
步驟3:開啟php的oci8擴充 編輯 php.ini,把 OCI8 擴充打開,也就是去掉註解符號‘;’:extension=php_oci8.dll
#重新啟動 Apache。重啟伺服器(伺服器必須重啟,不然環境變數不起效)
重啟後透過phpinfo() 看到以下內容則表示設定成功:
#OCI8 Support | enabled |
#Version | 1.4.7 |
Revision | $Id: bf2eaf558b050b6d2e6d098bed6345af7e842ea4 $ |
Active Persistent Connections | 0 |
Active Connections | 0 |
Oracle Run-time Client Library Version | 11.2.0.3.0 |
Oracle Instant Client Version | 11.2 |
Temporary Lob support | enabled |
enabled |
Local Value | ##Master Value | |
---|---|---|
no value | no value | ##oci8.default_prefetch |
100 | #oci8.events | |
Off | #oci8.max_persistent | |
-1 | oci8.old_oci_close_semantics | |
Off | oci8.persistent_timeout | |
-1 | oci8.ping_interval | |
60 | oci8.privileged_connect | |
Off | #oci8.statement_cache_size | |
20 |