6

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

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

例如:

Hervé 需要转换为 Herve

或者

Mañana 需要转换为 Manana

4

2 回答 2

13
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));
}
于 2012-12-07T19:22:51.460 回答
0

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

于 2012-12-07T18:57:50.560 回答