最近同事發現在某個資料表的欄位上要輸入一個中文字「彣」時,輸入後都會顯示成「?」。有某些特定的中文字就是無法加入到這個欄位上。 後來我看了一下,發現這個欄位的型別是varchar,我想應該要改成nvarchar才能支援多國語言。後來改成nvarchar後,果然可以直接去修改資料表這個欄位的內容,直接輸入「彣」了。 不過,後來查了一下網路上的資料,發現在下SQL指令時,要能正確地輸入這種特殊字元的話,除了資料表的欄位必須設定成nvarchar外,還 必須在SQL指令上加上N'' ,例如: -- 在SQL指令上都加上N'' Insert TestIME VALUES( N'小彣',N'小彣') 以下是我的一些簡單的測試,發現就算是針對一些設定成varchar的欄位,也可以加上N'',不會有問題的。所以未來應該是只要是要設定字串的話,就是多加一個N''囉。 測試用資料表設計如下。一個欄位用nvarchar,另一個用varchar。 測試的語法如下: -- 測試在輸入時不加N INSERT TestIME VALUES( '小彣', '小彣') -- 測試在輸入時都加上N INSERT TestIME VALUES( N'小彣', N'小彣') -- 測試針對一般字完都加上N INSERT TestIME VALUES( N'小明', N'小明') select * FROM TestIME 執行後的結果如下: