首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP MSSQL 擴展查詢中文字段名編碼轉換解決方案

     編輯:PHP 綜合知識

問題現象

SQL Server 2000 表字段為中文名(如 欄目、正題),PHP MSSQL 擴展查詢報錯,實為編碼不一致導致 SQL 語句中文部分變亂碼。

排查步驟

  1. 確認數據庫編碼:GBK(代碼頁 936)。
  2. 確認 PHP 腳本文件編碼:UTF-8。
  3. SQL 語句字符串編碼與數據庫不一致,需統一轉換。

解決方案:統一轉換函數

function utf8togb($s) {
    return iconv('utf-8', 'gbk//IGNORE', $s); // IGNORE 忽略無法轉換字符
}

// 建議:中文字段起英文別名,避免編碼麻煩
$sql = "SELECT [id], [欄目] as typeid, [正題] as title, [作者] as author, convert(text, [正文]) as body FROM [文章表];";
$sql = utf8togb($sql); // 執行查詢前轉換
$res = mssql_query($sql);

最佳實踐建議

  • **堅決避免** 中文字段名、表名,設計階段使用英文別名。
  • 若必須對接舊庫,在 DAL 層封裝 iconv 轉換,業務層感知不到編碼差異。
  • PHP 5.3+ 推薦使用 PDO_DBLIB 或 sqlsrv 擴展,支援更完善的字符集處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved