【问题标题】:Get correct output from UTF-8 stored in VarChar using Entity Framework or Linq2SQL?使用实体框架或 Linq2SQL 从存储在 VarChar 中的 UTF-8 获取正确的输出?
【发布时间】:2025-12-04 01:05:03
【问题描述】:

Borland StarTeam 似乎将其数据作为 UTF-8 编码数据存储在 VarChar 字段中。我有一个 ASP.NET MVC 站点,它使用 StarTeam 数据库返回一些自定义 HTML 报告,我想找到一个更好的解决方案来获取正确的数据,以便用 MVC2 重写。

我用EncodingGetBytes 和GetString 尝试了一些东西,但我无法让它工作(我们在工作中主要使用Delphi);然后我找到了a T-SQL function to return a NVarChar from UTF-8 stored in a VarChar,并创建了新的 SQL 视图,将数据作为 NVarChar 返回,但速度很慢。

实际问题如下所示:“description†而不是“description”,在使用 Linq2SQL 时在 SSMS 和网页中

有没有办法使用 Entity Framework 或 Linq2SQL 从这些字段中获取正确的数据?

【问题讨论】:

  • 数据很可能被存储到VARCHAR,就像它是代码页1252一样。所以最好尝试Encoding.UTF8.GetString(Encoding.GetEncoding(1252).GetBytes())

标签: linq-to-sql entity-framework utf-8


【解决方案1】:

嗯,一旦你把数据拿出来,你总是可以试试这个:

Encoding.UTF8.GetString(Encoding.Default.GetBytes(item.Description))

假设该字段在系统 ANSI 页面中编码。如果由于某种原因不正确(例如从 DB 类型查找),您可能必须使用 Encoding.GetEncoding() 创建正确的编码。

【讨论】:

  • 我曾尝试过在搜索中发现的类似的东西,但我认为我之前没有见过 Encoding.Default。谢谢