一尘不染

删除/替换国际字符

sql

我正在C#中创建一个小型应用程序,以基于从SQL查询传递的信息来搜索文件名。在从SQL查询传递的数据中,偶尔会有(其中有多个实例是由于我公司的国际访问者引起的)名称中带有国际字符的名称。我们使用的文件名是英文字母,没有特殊字符。

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

例如:

Hervé needs to be converted to Herve

Or

Mañana needs to be converted to Manana


阅读 111

收藏
2021-03-17

共1个答案

一尘不染

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));
}
2021-03-17