Entity Framework C# Insert Data 俄语编码问题
Posted
技术标签:
【中文标题】Entity Framework C# Insert Data 俄语编码问题【英文标题】:Entity Framework C# Insert Data russian encoding problems 【发布时间】:2011-08-18 20:49:02 【问题描述】:我在我的项目中使用 EDM 模型。
当我通过 post 请求在数据库中插入俄语单词时,我得到 ??????
控制器:
[Authorize]
[HttpPost]
public string DescEdit(FormCollection formValues)
var CurrentUserPhoto = User.Identity.Name;
string x = Request.Form["id"];
Int64 id = Convert.ToInt64(x);
photos upPhotoDesc = photosRepository.GetPhotosById(id, CurrentUserPhoto);
upPhotoDesc.description = Request.Form["value"];
photosRepository.Save();
return Request.Form["value"];
-
在数据库中所有字符集都设置为 utf-8
在布局页面内容enc类型是utf-8
数据库代码:
CREATE TABLE `photos` (
`id` bigint(255) NOT NULL AUTO_INCREMENT,
`done` tinyint(1) NOT NULL DEFAULT '0',
`imgsmall` varchar(255) NOT NULL DEFAULT '',
`imgcrop` varchar(255) NOT NULL DEFAULT '',
`imgmiddle` varchar(255) NOT NULL DEFAULT '',
`imgbig` varchar(255) NOT NULL DEFAULT '',
`full_size` varchar(255) NOT NULL DEFAULT '',
`description` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`permission` tinyint(1) NOT NULL DEFAULT '0',
`userid` int(11) NOT NULL DEFAULT '0',
`userlogin` varchar(255) NOT NULL DEFAULT '',
`rating` smallint(5) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `indx_photos_1` (`id`,`userlogin`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;
【问题讨论】:
好吧,事件链中的 something 必须在与过时的字符集之间进行有损转换。您需要识别该内容并确保它使用 Unicode。 在黑暗中射击:您确定数据库实际上包含问号吗?也许只有你用来查看数据库的东西会显示问号。 我已经在 2 小时内试图了解这个“东西”在哪里 :)) 您是否使用调试器单步执行了代码并确保Request.Form["value"]
仍然包含正确的西里尔字母?
如果你还没有看过我最近写了这篇关于 php/LAMP 中常见字符集问题的文章webmonkeyuk.wordpress.com/2011/04/23/…
【参考方案1】:
在实体框架的连接字符串中添加charset=utf8
这是一个有效的添加节点:
<add name="photostorageEntities"
connectionString="metadata=res://*/Models.Photos.csdl|res://*/Models.Photos.ssdl|res://*/Models.Photos.msl;provider=mysql.Data.MySqlClient;provider connection string="server=ServerIP;User Id=UID;password=PASS;Persist Security Info=True;database=photostorage; Charset=utf8""
providerName="System.Data.EntityClient" />
【讨论】:
谢谢你 - 让我头疼! 添加 charset=utf8 导致“不支持嵌套事务”错误:(以上是关于Entity Framework C# Insert Data 俄语编码问题的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework C# Insert Data 俄语编码问题
C# Entity Framework中的IQueryable和IQueryProvider详解
C# Entity Framework中的IQueryable和IQueryProvider详解
在 C# Entity Framework 中阅读 Oracle SYS_REFCURSOR?