-1

我在数据库上有一个奇怪的字符串看起来像这样

"இரண்டு வருடங்கள்"

在浏览器上它正确显示如下

"இரண்டு வருடங்கள்" (this is the correct way)

问题是我无法在数据库上正确搜索短语,因为它以一种奇怪的方式存储。如何转换为像“இரண்டு வருடங்கள்”这样的正确 unicode 并存储?

//数据库字段正确设置为NVarchar,如果我直接存储正确的值,它会保持在数据库中,所以问题不存在。

我需要找到一种方法将源字符串从奇怪的 unicode 格式正确转换为正确的 Unicode 并存储在数据库中。

注意:我已经尝试过这些指南,但没有奏效。

将 Unicode 字符串转换为正确的字符串

C# 将字符串从 UTF-8 转换为 ISO-8859-1 (Latin1) H

我的插入代码如下所示:

string insertSql = @"INSERT INTO Importer (Heading, Url) VALUES (@0, @1)";
using (SqlCommand insertCmd = new SqlCommand(insertSql, con))
{
    insertCmd.Parameters.AddWithValue("@0", heading);
    insertCmd.Parameters.AddWithValue("@1", url);
    insertCmd.ExecuteNonQuery();
}

字段声明为:

[Heading] [nvarchar](500) NULL

数据库不是问题,我尝试插入正确的字符串并将其存储。唯一的问题是,奇怪的 Unicode 字符串是这样存储的,但是当在浏览器上查看时,它会正确显示。

您可以尝试将字符串复制到 html 文件并在浏览器上查看。它会正确显示,但是当您查看源代码时,它会以错误的奇怪方式显示。

尝试使用此内容创建一个 html 文件,然后在浏览器上查看并查看源代码。

"இரண்டு வருடங்கள்"
4

2 回答 2

0

您没有显示您的 SQL,但是这个示例应该可以工作。请注意,“N”非常重要。

INSERT INTO YourTable(YourColumn) values (N'இரண்டு வருடங்கள்')
于 2020-02-04T03:30:00.887 回答
0

我找到了解决方案,我只需要在插入之前对其进行解码,一切看起来都很好。

HttpUtility.HtmlDecode(heading)

那个奇怪的字符串是 Unicode HtmlEncoded 字符串。

于 2020-02-04T05:06:04.140 回答