2017-08-31 132 views
0

當我試圖在我的數據庫中保存Unicode數據(如中文)時,它在sql數據庫表中保存爲問號???????在sql數據庫中使用webapi時,Unicode數據沒有以正確的格式保存

public IHttpActionResult SaveSelections(UserPreference model) 
    { 
     var user = db.UserPreferences.FirstOrDefault(p => p.UserName == model.UserName); 
     //var psellers= db.PSellers.ToArray(); 
     if (user == null) 
     { 
      try 
      { 
       db.UserPreferences.Add(model); 
       db.SaveChanges(); 
      } 
      catch (Exception e) 
      { 
       return BadRequest(e.Message); 
      } 
     } 
     else 
     { 
      try 
      { 
       user.AreaText = model.AreaText; 
       user.RegionText = model.RegionText;      

       db.SaveChanges(); 
      } 
      catch (Exception e) 
      { 
       return BadRequest(e.Message); 
      } 

     } 
     return Ok(); 
    } 
+0

您是否使用UTF8編碼創建數據庫?如果您沒有指定它,則默認爲ASCII。 – campovski

+0

不,我沒有創建爲UTF8編碼 –

+0

那麼這就是你的問題。使用ASCII編碼不能在數據庫中存儲unicode字符。使用unicode編碼創建新數據庫並將當前數據傳輸到新數據庫是最安全的方式。將發佈作爲答案... – campovski

回答

0

你的數據庫,你在你的問題評論說,確實接受UTF8但ASCII。你有什麼才能做數據庫接受Unicode字符運行以下命令:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci; 

欲瞭解更多信息請參閱Database Character Set and Collation

因此,基本上,創建新的數據庫並將當前數據傳輸給它。如果你不知道怎麼做,答案是here

+0

這將在Sql服務器上工作嗎?因爲我無法創建utf8數據庫 –

+0

哦,你正在使用SQL Server。以上是針對MySQL的。創建數據庫時SQL Server的默認字符集是UTF8。但是,而不是'varchar'你必須使用'nvarchar' – campovski

+0

nvarchar也不工作,如果我插入「(주)타이호인스트-KR」然後在表中它將更新爲「(?)?????? - KR」 –

相關問題