C# 在插入SQL数据库之前删除字符串中的重音符号

C# 在插入SQL数据库之前删除字符串中的重音符号,c#,sql,C#,Sql,我已经编写了下面的测试,以从一个可以工作的字符串中删除重音字符。由于公司的政策,我无法显示程序中的任何代码,这就是为什么我编写了对违规代码的测试 class Program { static void Main(string[] args) { String name = "Damián"; Console.WriteLine(name); Console.WriteLine(""); Console.Write

我已经编写了下面的测试,以从一个可以工作的字符串中删除重音字符。由于公司的政策,我无法显示程序中的任何代码,这就是为什么我编写了对违规代码的测试

class Program
{
    static void Main(string[] args)
    {
        String name = "Damián";

        Console.WriteLine(name);
        Console.WriteLine("");

        Console.WriteLine(removeAccents(name));
        Console.ReadLine();
    }

    static string removeAccents(string text)
    {
        return Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(text));
    }
}
但是,当我尝试将新字符串插入数据库时,重音字符会重新出现在数据中。我正在使用参数化的SqlCommand插入数据。调试程序时,数据中不存在重音符号,只有在执行命令时才存在重音符号。是否会改变文本编码

在此方面的任何帮助都将不胜感激

编辑:

上述代码用于删除重音并生成输出:

达米安

达米安

_

但是,当在数据库中输入名称时,它又包含了“á”。

我认为“removeAccents”函数需要做一些工作

让我们向前推进两步-

static string RemoveAccents(string text) 
{
    var normalized = text.Normalize(NormalizationForm.FormD);
    var builder = new StringBuilder();

    foreach (var character in normalized)
    {
        var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(character);
        if (unicodeCategory != UnicodeCategory.NonSpacingMark)
        {
            builder.Append(character);
        }
    }

    return builder.ToString().Normalize(NormalizationForm.FormC);
}

让我们看看这是否有帮助。

你为什么要先去掉口音?SQL server可以通过指定排序规则…total guess来执行不区分重音的比较,因为我们看不到实际代码-是否插入了要传递到removeAccents方法的字符串,而不是从该方法返回的字符串?是否无法从字符串中删除重音,在将其插入数据库之前?我决定将带有重音符号的名称添加到数据库中,并在检索时删除它们Adam-当然这是可能的-因此这将归结为代码中的错误。尝试此操作-将removeAccents方法的返回值指定给一个全新的字符串并插入该字符串-不要再次使用name变量。看看是否有效。谢谢你的帮助,但这和我的代码一样有效。这个问题是一旦数据输入到数据库中,它又包含重音符号。这非常奇怪。我意识到这甚至可能是粗鲁的建议,但你确定你正在将规范化字符串写入数据库吗?事实上,我确定我正在将规范化字符串写入数据库。有两个字符串,一个标准化字符串和一个非标准化字符串,用于不同的应用程序。我已经走上了从数据库检索时规范化应用程序中数据的道路。