PHP串連ORACLE時亂碼,手動PUTENV(NLS_LANG)環境變數後正常!

來源:互聯網
上載者:User
我有一個項目,從MYSQL遷移到ORACLE RAC中,資料庫為UTF8編碼格式,用PHP進行簡單串連取出的中文均為問號,百度後發現在進行資料庫連接時需要指定串連編碼為UTF8,我指定了環境變數,並在測試頁列印了PHP中全域環境變數,phpinfo(INFO_ENVIRONMENT),結果就正常了。如果不指定,PHP環境變數頁面沒顯示nls_lang的變數資訊,則依舊亂碼,現在有什麼辦法,我有好幾十個PHP頁面,難道都要手動在開頭PUTENV(NLS_LANG)定義一下麼。求高手賜招能夠在PHP服務運行時就內建環境變數nls_lang的參數。並自動在INFO_ENVIRONMENT顯示成功。

補充下,我是centos6.5,已經在.bash_profile中定義了nls_lang。但貌似不起作用。PHP是5.6,WEB伺服器是nginx 1.9


回複討論(解決方案)

ORACLE 沒有 utf8 只有 utf-8
你在連結 ORACLE 時就應聲明所用字元集
只有 ORACLE 8 及以下,才需要設定環境變數

ORACLE 沒有 utf8 只有 utf-8
你在連結 ORACLE 時就應聲明所用字元集
只有 ORACLE 8 及以下,才需要設定環境變數


您說的對,但是有沒有辦法設定預設字元集,即和JAVA那樣不在PHP連接字串中
$conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8');或者putenv("NLS_LANG=american_america,UTF8");

兩者都能夠正常。我現在就是想和JAVA那樣不用事先申明,因為我的TEST.PHP文本就是UTF8格式,資料庫也是UTF8格式,應該能夠自動匹配吧?

我手動輸出系統內容變數nls_lang,結果是空的,
phpinfo(INFO_ENVIRONMENT);
?>
求賜教如何才能在PHP初始化的時候裝載系統內容變數,換句話說如何指定PHP的環境變數,bash_profile不起作用。

寫成 $conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8'); 就那麼費事嗎?
java 是通過 jdbc 進行資料庫操作的,php 是通過用戶端的
所以後者要多做一些設定上的事情

額,其實這公司是別的軟體公司的產品,原生MYSQL,後來由於公司要求統一用ORACLE RAC資料庫,遷移過去的。。好吧我找找他們的資料庫連接是寫在哪的,自己改下算了。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.