如何在ASP.NET MVC/SQL应用程序中正确编码外来重音字符(请使用C-R-U示例)
本文关键字:字符 示例 C-R-U 请使用 编码 NET ASP MVC 应用程序 SQL | 更新日期: 2023-09-27 17:59:17
通过HTML/MVC/LINQ to SQL读取/保存/更新重音字符的最佳实践是什么?
我们有一个网络应用程序,用户可以在其中提交来自世界各地的文章。一些用户,特别是欧洲的用户,提交带有重音/扩展字符的文章。我们正在使用Linq到SQL、C#、SQL 2005。我们所有的数据库表都是标准化的,并且使用Linq-to-SQL作为数据映射层。
我们想修复的错误是,在我们的MVC3/SQL 2005应用程序中,用户通过普通提交的单词中的重音字符
using (Html.BeginForm()) {... }
块到具有[HttpPost]属性的控制器被呈现为"?"保存事件。例如,在输入外来字符之前,一切都很好,在这种情况下,我们可能会在数据库中有一个关于"经验证的活动"的记录。
用MVC3、SQL2005之类的方式对它们进行编码的最佳实践是什么?
如果有人概述了类似的创建、读取和更新操作,或者告诉我我缺少了什么神奇的东西,我将不胜感激。谢谢你的建议!
您需要使用
- nvarchar类型(不是varchar)
- 前缀为N的文字,例如
WHERE x = N'foo'
示例:只有N前缀+nvarchar保存OK
DECLARE @test TABLE (Broken varchar(10), Working nvarchar(10))
INSERT @test VALUES (N'Value 化化', N'Value 化化')
INSERT @test VALUES ('Value ける', 'Value ける')
SELECT * FROM @test
也没有全球魔法设置。。。
编辑:
我还会运行SQL探查器来查看您是否正在发送字符
我现在怀疑你在它进入数据库之前就破坏了它。
采用西欧(DE+FR+Nordics),如果没有我在上的建议,它可以正常工作
DECLARE @test TABLE (NowWorking varchar(10), Working nvarchar(10))
INSERT @test VALUES (N'öéäàüè', N'öéäàüè')
INSERT @test VALUES ('öéäàüè', 'öéäàüè')
SELECT * FROM @test