SQL Server 2000 表字段為中文名(如 欄目、正題),PHP MSSQL 擴展查詢報錯,實為編碼不一致導致 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);
iconv 轉換,業務層感知不到編碼差異。PDO_DBLIB 或 sqlsrv 擴展,支援更完善的字符集處理。