MSSQL 中 英 文版差別
最近在轉一套以前寫的系統,當然是BIG5
要改寫成目前新的 .Net 所以一定要轉 Unicode
VS2017 是一定用 Unicode 所以只要讀出檔案內容
show出來不是亂碼 基本上就是 Unicode碼
在 MSSQL(語系 中文) 上都沒啥問題
今天放上 SmaterAsp 卻發生 神奇的事.....
SmaterAsp 的 MSSQL(語系 英文)
明明看到存入欄位 Qname 資料是 "測試test"
但是用 where Qname='測試test'
就是找不到
用 SQL管理程式 連進去 SmaterAsp MSSQL key SQL指令也是找不到
***************************************************
本以為是轉碼問題 但怎麼試都試不出來
後來試到一個奇怪問題
存資料時
如果是 用 Qname=@name
cmd.Parameters.AddWithValue("@Qname", Q_Name);
中文就會寫入 OK
但是如果是用拼字串方式
Qname='"+Q_Name+"'"
填入資料庫就會變成亂碼 ?????
本以為是之前觀念錯了 .Net 字串存的不是 Unicode ...
後來查到 英文版 MSSQL 時才發現 有個特殊用法
where Qname=N'測試test'
要加 N 才會被指定是 nvarchar 不然會被轉成亂碼
對了
要存中文 unicode 欄位一定要設成 nvarchar
不然存進去也是亂碼 ....
參數盡量 用
cmd.Parameters.AddWithValue("@Qname", Q_Name);
這種給法
應該可以躲過 忘了 加 N 的神奇錯誤
要改寫成目前新的 .Net 所以一定要轉 Unicode
VS2017 是一定用 Unicode 所以只要讀出檔案內容
show出來不是亂碼 基本上就是 Unicode碼
在 MSSQL(語系 中文) 上都沒啥問題
今天放上 SmaterAsp 卻發生 神奇的事.....
SmaterAsp 的 MSSQL(語系 英文)
明明看到存入欄位 Qname 資料是 "測試test"
但是用 where Qname='測試test'
就是找不到
用 SQL管理程式 連進去 SmaterAsp MSSQL key SQL指令也是找不到
***************************************************
本以為是轉碼問題 但怎麼試都試不出來
後來試到一個奇怪問題
存資料時
如果是 用 Qname=@name
cmd.Parameters.AddWithValue("@Qname", Q_Name);
中文就會寫入 OK
但是如果是用拼字串方式
Qname='"+Q_Name+"'"
填入資料庫就會變成亂碼 ?????
本以為是之前觀念錯了 .Net 字串存的不是 Unicode ...
後來查到 英文版 MSSQL 時才發現 有個特殊用法
where Qname=N'測試test'
要加 N 才會被指定是 nvarchar 不然會被轉成亂碼
對了
要存中文 unicode 欄位一定要設成 nvarchar
不然存進去也是亂碼 ....
參數盡量 用
cmd.Parameters.AddWithValue("@Qname", Q_Name);
這種給法
應該可以躲過 忘了 加 N 的神奇錯誤
留言
張貼留言