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变量。看看是否有效。谢谢你的帮助,但这和我的代码一样有效。这个问题是一旦数据输入到数据库中,它又包含重音符号。这非常奇怪。我意识到这甚至可能是粗鲁的建议,但你确定你正在将规范化字符串写入数据库吗?事实上,我确定我正在将规范化字符串写入数据库。有两个字符串,一个标准化字符串和一个非标准化字符串,用于不同的应用程序。我已经走上了从数据库检索时规范化应用程序中数据的道路。