Unicode数据未使用webapi以正确的格式保存在sql数据库中
Posted
技术标签:
【中文标题】Unicode数据未使用webapi以正确的格式保存在sql数据库中【英文标题】:Unicode data is not saved in right format in sql database using webapi 【发布时间】:2018-02-09 00:33:48 【问题描述】:当我尝试在我的数据库中保存 Unicode 数据(例如中文)时,它会在 sql 数据库表中保存为问号 ???????
。
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();
【问题讨论】:
您是否使用 UTF8 编码创建了数据库?如果未指定,则默认为 ASCII。 NO 我没有创建为 UTF8 编码 那是你的问题。您不能使用 ASCII 编码将 unicode 字符存储在数据库中。最安全的方法是使用 unicode 编码创建新数据库并将当前数据传输到新数据库。将作为答案发布... 【参考方案1】:正如您在对问题的评论中所说,您的数据库不接受 UTF8 而是接受 ASCII。为了让数据库接受 unicode 字符,您必须执行以下命令:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;
欲了解更多信息,请参阅Database Character Set and Collation。
所以基本上,创建新数据库并将当前数据传输到它。如果你不知道怎么做,答案是here。
【讨论】:
这可以在 Sql server 中使用吗?因为我无法创建 utf8 数据库 哦,您使用的是 SQL Server。以上是针对 mysql 的。 SQL Server 创建数据库时的默认字符集是 UTF8。但是你必须使用nvarchar
而不是varchar
nvarchar 如果我插入“(주)타이호인스트-KR”也不起作用,那么在表格中它将更新为“(?)??????-KR”以上是关于Unicode数据未使用webapi以正确的格式保存在sql数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何以 unicode (BE) 格式将数据存储在 CFDataRef 中?