none
請問PHP連線SQL2005並使用unicode件資料表時的存取問題 RRS feed

  • 問題

  • 如題,小弟想請問各位高手大大是否有遇到相關的問題,希望各位高手可以給予建議的解決方式或方向.

    小弟目前開發一個網路專案,使用的語言是PHP(PHP 5.1.4),背後使用的資料庫是SQL 2005 Std.由與使用一些元件的關係,在網頁的開發上是使用utf-8作為網頁編碼方式,當然,網頁編寫過程也是使用utf-8做為文件的編碼.但是使用SQL SERVER時就讓小弟頭大了,因為建立資料表時欄位使用上是用nchar,nvarchar,結果在網頁存取時,一直無法正確的寫入資料庫,更別說讀出資料庫的資料了,想請問各位大大有解決方式嗎?

    小弟有搜尋到了一些文章與改進方向,不過,測試完後依然沒辦法解決..

    作業環境  IIS5 + php5.1.4 +SQL2005,並更換PHP 內的 ntwdblib.dll 成SQL2000內的版本

    1.安裝odbtp,一直沒成功過   囧rz

    2.php中的mb_convert_encoding,轉換字串成ucs2/utf-8(參考了http://support.microsoft.com/kb/232580/zh-tw),不成功

    3.使用store procedure 並在字串前加入 N ,不成功(不論是以big5或utf-8/ucs-2傳入參數)

    4.使用 ADOdb http://adodb.sourceforge.net ,一樣不成功

    不知道有無大大曾經解決此問題?希望可以指點小弟迷津...(難道只能把欄位改成varchar/char???)

    快瘋了 @@

    因為直覺應該可以在資料庫端解決此一問題,所以POST在此,先謝謝各位大大了

     

    2007年3月18日 下午 03:18

解答

  • 在 Win32環境下連接 SQL SERVER (7.0/2000/2005), 要存取 unicode (UTF-8)

    可以CALL COM元件完成

    <?php
    $conn    
    = new COM("ADODB.Connection"NULLCP_UTF8) or die("Cannot start ADO");
    $conn->Open("Driver={SQL Server};Server={MYSERVER};Database=MYDB;UID=MYUSERNAME;PWD=MYPWD;");

    $insQ    "INSERT INTO tblcrap(
                    ntitle
                ) VALUES (
                    N'主要提供泰式菜餚的餐廳'
                )"
    ;
    $rs     $conn->Execute($insQ);
    ?>


    重點是在 
    NULLCP_UTF8 這段指定

    這樣點就應該看得懂了
    2007年6月26日 上午 02:06

所有回覆

  • 在 Win32環境下連接 SQL SERVER (7.0/2000/2005), 要存取 unicode (UTF-8)

    可以CALL COM元件完成

    <?php
    $conn    
    = new COM("ADODB.Connection"NULLCP_UTF8) or die("Cannot start ADO");
    $conn->Open("Driver={SQL Server};Server={MYSERVER};Database=MYDB;UID=MYUSERNAME;PWD=MYPWD;");

    $insQ    "INSERT INTO tblcrap(
                    ntitle
                ) VALUES (
                    N'主要提供泰式菜餚的餐廳'
                )"
    ;
    $rs     $conn->Execute($insQ);
    ?>


    重點是在 
    NULLCP_UTF8 這段指定

    這樣點就應該看得懂了
    2007年6月26日 上午 02:06
  • 謝謝您的解答
    ~多謝~~
    2007年7月8日 上午 03:31