我正在使用种子方法来填充数据库。 一些对象具有西里尔字母的属性。例如:
context.Wines.AddOrUpdate(new Wine()
{
Id = 1,
Name = "Шардоне",
etc........................................
在数据库中正确创建对象,但是当我在MS SQL管理工作室中检查数据库而不是葡萄酒的名称为“Шардоне”时,它显示为“Øàðäîíå”。
奇怪的是,当我在Startup类中创建葡萄酒时,这样:
var db = new WineSystemDbContext();
var ShardoneWine = new Wine { Name = "Шардоне};
db.Wines.Add(ShardoneWine);
数据库中的所有内容都以西里尔文正确显示。
你知道可能导致这种情况的原因吗?
答案 0 :(得分:5)
您可以在connection string中指定connectin的字符集。只需将此部分添加到您的连接中:
charset=UTF8;
如果没有结果,您可以尝试更改Configuration.cs文件的char-set。有两种方法可以做到这一点。
如果您使用ntext列类型,也可能会遇到问题。
答案 1 :(得分:0)
为了存储,例如西里尔字母字符,必须为nvarchar(x)
至少从我的经验来看。
我已经看到了相同的现象:varchar(100)
数据很好但是???
出来了 - 但是nvarchar(100)
一切似乎没问题。
答案 2 :(得分:0)
在您的查询中需要添加de N (告诉SQL Server它是unicode),例如:
SELECT * FROM Wines WHERE someColumn = N'sometext'
答案 3 :(得分:0)
我找到了解决方案!
这是我做的(在另一个主题中找到)
在解决方案资源管理器中打开您的Configuration.cs文件,复制Seed方法并在Windows记事本中粘贴代码(暂时)。
“接下来关闭Visual Studio中的Configuration.cs(如果已打开),然后在解决方案资源管理器中右键单击该文件并选择”打开方式...“ - >”带编码的CSharp编辑器“并从列表中选择选择“Unicode(带签名的UTF-8) - 代码页65001”选项(当这个选项显示一些“中文”字符时,尝试不同的选项)。
将Seed方法替换为记事本中的方法。保存,删除数据库和Update-Databse中的现有数据。您的国家/地区字符现在可以正确显示。
干杯“。
感谢大家的帮助
答案 4 :(得分:0)
我得到了以下方面的帮助: 选择“文件” - > “高级保存选项”并使用使用UNICODE(带签名的UTF-8)编码和行结尾 - 当前设置对数据进行种子设定的方法保存文件。