iT邦幫忙

1

已解決 C#專案中使用MSSQL存入中文後變成亂碼

  • 分享至 

  • xImage

如題
原本的資料庫是使用MYSQL
使用了SSMA轉移到MSSQL
原本的資料都沒問題
直接在資料庫上修改也可以
但是專案中存入會變成???
已確定所屬欄位是NVARCHAR了
MSSQL的版本為2016
請問該問題有什麼樣的方法可以修正呢?


已解決
兇手是
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<資料表名字>()
.Property(e => e.name);
//.IsUnicode(false);<---這條
}

以後有需要的人, 可以參考這裡
INSERT INTO TESTWORD
VALUES (N'瀞', N'瀞')
可參考這篇。
https://dotblogs.com.tw/stanley14/2015/11/11/153893
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2

這只是編碼的問題。
你要先確定你的程式碼、資料庫都是統一一種編碼才行。

a500197 iT邦新手 5 級 ‧ 2020-05-12 10:38:39 檢舉

請問如何查詢檢驗呢?

1
米歐
iT邦新手 3 級 ‧ 2020-05-12 15:18:02

可以檢查你專案中寫入DB的SQL語法是什麼,MSSQL若要存中文需要 N 前綴詞,可能是漏了這個。

a500197 iT邦新手 5 級 ‧ 2020-05-12 15:45:48 檢舉

db.SaveChanges();
是使用這個

notice.name = "N"+frm["txtnoticeName"];
這樣寫嗎?
可是依然不行呢

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:34:30 檢舉

他的意思是
insert into test(name,sex) values (N'我是Merci',N'女生')

參考:https://blog.xuite.net/merci0212/wretch/141175595-%5B%E8%BD%89%E8%BC%89%5D%E8%A7%A3%E6%B1%BA%E8%8B%B1%E6%96%87%E7%89%88MSSQL%E4%B8%AD%E8%BC%B8%E5%85%A5%E4%B8%AD%E6%96%87%E6%9C%83%E5%87%BA%E7%8F%BE%E4%BA%82%E7%A2%BC%E7%9A%84%E5%95%8F%E9%A1%8C

米歐 iT邦新手 3 級 ‧ 2020-05-12 18:24:10 檢舉

是 pinglam 大說的這個沒錯,我不知道你的SQL語句是什麼,除了各樓大大說的問題外,這也是你會存入亂碼的可能之一。

0
pinglam
iT邦新手 5 級 ‧ 2020-05-12 16:54:41

請確保database的編碼是utf8
https://ithelp.ithome.com.tw/upload/images/20200512/20117157XfBIEO7Way.png
MSSQL :
https://ithelp.ithome.com.tw/upload/images/20200512/201171579QXN9QzbP5.png

看更多先前的回應...收起先前的回應...
a500197 iT邦新手 5 級 ‧ 2020-05-12 17:14:27 檢舉

請問這個頁面要去哪邊做檢查呢?

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:19:33 檢舉

去你自己的mysql查.....

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:20:36 檢舉

不會用command 去查的話,推薦你用mysql workbench查

a500197 iT邦新手 5 級 ‧ 2020-05-12 17:21:08 檢舉

可是我是MSSQL...

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:29:28 檢舉

.....抱歉,看錯了,不過MSSQL 用NVARCHAR的確是可以存中文的呀@@

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:30:29 檢舉

我有一個project 也是用mssql ,用NVARCHAR是可以存中文,可能是你的source code有問題

pinglam iT邦新手 5 級 ‧ 2020-05-12 17:52:21 檢舉

我看了一下我的MSSQL ,也是可以調編碼,已補圖

我要發表回答

立即登入回答