我正在 C# 中创建一个小应用程序,以根据从 SQL 查询传递的信息搜索文件名。在从 SQL 查询传递的数据中,有时(由于我公司的国际访问者可能有多个实例)名称中包含国际字符。我们拥有的文件名是英文字母,没有特殊字符。
我正在尝试找到一种将国际字符转换为纯英文字母字符的方法,以便我可以完成此搜索?这可以通过数据库查询完成还是必须通过应用程序代码完成?
例如:
Hervé 需要转换为 Herve
或者
Mañana 需要转换为 Manana
我正在 C# 中创建一个小应用程序,以根据从 SQL 查询传递的信息搜索文件名。在从 SQL 查询传递的数据中,有时(由于我公司的国际访问者可能有多个实例)名称中包含国际字符。我们拥有的文件名是英文字母,没有特殊字符。
我正在尝试找到一种将国际字符转换为纯英文字母字符的方法,以便我可以完成此搜索?这可以通过数据库查询完成还是必须通过应用程序代码完成?
例如:
Hervé 需要转换为 Herve
或者
Mañana 需要转换为 Manana
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));
}
如果您针对 MS-SQL 服务器运行,请参阅联机帮助中的 COLLATE。您可以在功能上动态更改编码。