去除/替换国际字符

6
我正在用C#创建一个小应用程序,根据从SQL查询传递的信息搜索文件名。在从SQL查询传递的数据中,偶尔会出现国际访客名字中含有国际字符(可能有多个实例)。我们拥有的文件名是英文字母表,没有特殊字符。
我正在尝试找到一种方法将国际字符转换为纯英文字母表字符,以便完成此搜索?这可以通过数据库查询实现吗,还是必须通过应用程序代码完成?
例如:
Hervé 需要转换为 Herve 或者
Mañana 需要转换为 Manana
2个回答

14
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));
}

0
如果你正在使用 MS-SQL 服务器,可以在在线帮助中查看 COLLATE。你可以在运行时功能性地更改编码。

1
我正在运行针对SQL服务器的代码,但是我从代码内部运行动态SQL。但是感谢COLLATE,我将研究在我的查询构建器中实现它。 - mattgcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接