我编写了下面的测试,以删除字符串中的重音字符。由于公司政策,我无法显示程序中的任何代码,这就是为什么我编写了违规代码的测试。
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插入数据。调试程序时,只有在执行命令时,数据中不存在重音。会否是改变文字编码的情况?
如果能在这方面提供任何帮助,我们将不胜感激。
编辑:
上面的代码用于移除重音,并生成输出:
达曼
达米安
_
但是,当名称被输入数据库时,它再次包含'á‘。
发布于 2014-08-06 10:44:54
我认为您的"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);
}看看能不能帮上忙。
https://stackoverflow.com/questions/25158218
复制相似问题