删除/替换国际字符

时间:2012-12-07 18:50:57

标签: c# sql character-encoding

我在C#中创建一个小应用程序,根据从SQL查询传递的信息搜索文件名。在从SQL查询传递的数据中,有时会出现(可能是我公司的国际访问者的多个实例)其中包含国际字符的名称。我们的文件名是英文字母,没有特殊字符。

我正在尝试找到一种方法将国际字符转换为纯英文字母字符,以便我可以完成此搜索?这可以通过数据库查询来完成,还是必须通过应用程序代码完成?

例如:

Hervé需要转换为Herve

或者

Mañana需要转换为Manana

2 个答案:

答案 0 :(得分:10)

var s1 = ToASCII("Hervé");
var s2 = ToASCII("Mañana"); 

string ToASCII(string s)
{
    return String.Join("",
         s.Normalize(NormalizationForm.FormD)
        .Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark));
}

答案 1 :(得分:0)

如果您正在针对MS-SQL服务器运行,请参阅联机帮助中的COLLATE。您可以在运行中以功能方式更改编码。