c# - 如何在 ASP.NET MVC/SQL 应用程序中正确编码外来重音字符(请提供 C-R-U 示例)

标签 c# html sql-server asp.net-mvc-3

通过 HTML/MVC/LINQ-to-SQL 读取/保存/更新重音字符的最佳实践是什么?

我们有一个网络应用程序,用户可以在其中提交来自世界各地的文章。一些用户,尤其是欧洲的用户,提交带有重音/扩展字符的文章。我们使用 Linq to SQL、C#、SQL 2005。我们所有的数据库表都已标准化,并使用 Linq to SQL 作为数据映射层。

我们要修复的错误是,在我们的 MVC3/SQL 2005 应用程序中,用户通过正常提交的单词中的重音字符

using (Html.BeginForm()) {... }

到 [HttpPost] 属性 Controller 的 block 呈现为“?”在保存事件上。例如,在输入外来字符之前,一切正常,在这种情况下,我们可能在数据库中有一条谈论“普罗旺斯事件”的记录。

以 MVC3、SQL2005 式的方式对这些进行编码的最佳实践是什么?

如果有人概述了类似的创建、读取和更新操作,或者告诉我我缺少什么神奇的东西,我将非常感激。感谢您的建议!

最佳答案

您需要使用

  • nvarchar 类型(不是 varchar)
  • 带有 N 前缀的文字,例如 WHERE x = N'foo'

示例:仅N前缀+nvarchar保存即可

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+北欧),无需我的上述建议即可正常工作

DECLARE @test TABLE (NowWorking varchar(10), Working nvarchar(10))
INSERT @test VALUES (N'öéäàüè', N'öéäàüè')
INSERT @test VALUES ('öéäàüè', 'öéäàüè')

SELECT * FROM @test

关于c# - 如何在 ASP.NET MVC/SQL 应用程序中正确编码外来重音字符(请提供 C-R-U 示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359421/

相关文章:

javascript - 单击确认按钮后移除卡

sql - 如何在 SQL 语句中声明 bool 参数?

sql-server - 在 SQL Server Management Studio 中保存文件失败

c# - 让我的第二个水平网格分离器正常工作

c# - 指定的包含路径无效。 EntityType 'SpiceShop.Models.Product' 未声明名称为 'Products' 的导航属性

javascript - 如何动态加载html文件并执行其中的外部js

尝试将鼠标悬停在 HTML 子菜单上时消失

c# - 更新/插入表格

c# - 以编程方式将本地用户添加到本地组

c# - MVVM,Catel和图形UI交互