我已经编写了下面的测试来删除有效字符串中的重音字符。由于公司政策,我无法显示程序中的任何代码,这就是我编写违规代码测试的原因。
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
达米安
_
但是,当在数据库中输入名称时,它再次包含'á'。
答案 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);
}
让我们看看是否有帮助。