雖然用的是 varchar 但並沒有使用中文難字,照常理判斷在 SQL1 正常顯示,在 SQL2 上不應出現異常
在比對後兩者 SQL資料庫的差異在於 定序,並進行了以下測試來確認
declare @var nvarchar(32)
set @var = N'文字測試1234Abcd口吅品瀞'
select @var 'export nvarchar(Chinese)',
convert(varchar(32),@var) COLLATE Chinese_Taiwan_Stroke_CI_AS 'export varchar(Chinese)',
convert(nvarchar(32),@var) COLLATE SQL_Latin1_General_CP1_CI_AS 'export nvarchar(Latin)',
convert(varchar(32),@var) COLLATE SQL_Latin1_General_CP1_CI_AS 'export varchar(Latin)'
基本上在 nvarchar 函數上是沒有問題,可以看到在不同的定序上 varchar 函數在中文的顯示上會變成 問號
所以如果在開發中文系統的時候就必須注意 資料庫的定序問題。
否則就是一律採用 nvarchar 函數來使用
※若是 SQL 已經安裝完成並不想再重新安裝的話,也可針對指定資料庫來變更定序設定
設定或變更資料庫定序
參考資料:
CAST 和 CONVERT (Transact-SQL)
Orignal From: SQL 中文字轉換 varchar 函數變成問號、亂碼
沒有留言:
張貼留言