[PHP] 用 MDB2 寫入 UTF-8 字串到 MSSQL 資料庫

發表時間: 2012-09-14 18:13:37
一劃 @ 114.34.1.251

PHP透過 PEAR_MDB2 在寫入 mssql 時, 雖然在freetds 宣告了 utf-8 格式, 但在寫入簡體中文時還昰會寫入變成問號(?), 比如我要寫入 "这是中文测试", 那麼在資料庫就會變成 "?是中文??", 中間穿插日文也是一樣, 直接在 SQL Server 上試時, 狀況也相同, 實在搞不清楚要調整SQL Server 哪裡才會正常, 但如果有寫入時強制規定字串為 N data type 則可成功寫入。 如 UPDATE abc SET name=N'这是中文测试' 因此, 在假設我之後所有寫入在mssql的字串資料都是 utf-8 的條件下, 直接修改 PEAR_MDB2 的內容 Driver/Datatype/Common.php line:1233return "'".$value."'"; 改為

   if ($db->dbsyntax == 'mssql') {
            return "N'".$value."'";
   } else {
            return "'".$value."'";
   }

這樣就ok了

回應文章