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

时间:2014-08-06 10:38:08

标签: c# sql

我已经编写了下面的测试来删除有效字符串中的重音字符。由于公司政策,我无法显示程序中的任何代码,这就是我编写违规代码测试的原因。

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来插入数据。调试程序时,只有在执行命令时,数据中才存在重音符号。是否会改变文本编码?

对此的任何帮助将不胜感激。

修改

上面的代码可以删除重音并产生输出:

的Damián

达米安

_

但是,当在数据库中输入名称时,它再次包含'á'。

1 个答案:

答案 0 :(得分:1)

我认为你的“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);
}

让我们看看是否有帮助。