【问题标题】:Unicode data is not saved in right format in sql database using webapiUnicode数据未使用webapi以正确的格式保存在sql数据库中
【发布时间】: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 编码创建新数据库并将当前数据传输到新数据库。将作为答案发布...

标签: sql angularjs asp.net-web-api


【解决方案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”
猜你喜欢
  • 1970-01-01
  • 2019-12-10
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2019-01-18
  • 2019-10-30
相关资源
最近更新 更多