编码 ASP.NET Core 和 SQL Server 的问题

Posted

技术标签:

【中文标题】编码 ASP.NET Core 和 SQL Server 的问题【英文标题】:Problems with encoding ASP.NET Core & SQL Server 【发布时间】:2018-05-18 19:17:18 【问题描述】:

我的数据库中有俄语问题。我从 xlsx 文件中读取数据。对于阅读,我使用库 OfficeOpenXml。调试时编码没有问题,但添加到数据库后只有???。 这就是我所拥有的:

【问题讨论】:

如果它的排序规则你可以通过运行这个查询在你的 SQL 端检查它,那么如果它不是你需要的,你需要更新它:SELECT collat​​ion_name FROM sys.databases WHERE name = 'database name' ;这里有更多信息:docs.microsoft.com/en-us/sql/relational-databases/collations/… @Brad 没有任何改变 您的字符列是否设置为 unicode(例如:nvarchar(max))? 您需要阅读、理解并开始使用参数化查询。您的代码对 sql 注入是开放的。你永远不应该建立一个这样的字符串并执行它。我的朋友 bobby tables 喜欢这种代码。 bobby-tables.com 【参考方案1】:

确保字符串字段上的数据类型是字符串的“n”个版本。 nChar、nvarchar、nText,这样您在处理非ANSI字符集时不会丢失数据

https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-2017

【讨论】:

【参考方案2】:

通过更改 Cyrillic_General_CI_AS 上的数据库排序规则解决

【讨论】:

以上是关于编码 ASP.NET Core 和 SQL Server 的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Asp.Net Core QueryHelpers 不编码逗号 (,) 符号?

在 ASP.NET Core 中替换硬编码字符串都有哪些好的做法?

渲染 Json+Ld 脚本时,ASP.NET Core 不应在 TagBuilder 中编码属性值

无法使用 ASP .NET Core 更新 SQL 位列

ASP.NET Core SQL 连接超时

如何使用 asp net core 2 连接到 SQL Server 2008?