可能重复:
How to convert a Unicode character to its ASCII equivalent
How do I remove diacritics (accents) from a string in .NET?
我需要使搜索表单对包含macrons,umlauts等的文本不敏感。
例如,“ŌōṒṓṐṑȪȫ”应被视为等于“oooooooo”。
在TSQL中,我能够部分使用它:
select Cast('ŌōṒṓṐṑȪȫ' as varchar)
返回Oo??????
。将前两个字符翻译为“O”和“o”是足够聪明的。
我试图使用这个C#代码来“压扁”文本,但它根本不起作用。结果是“????????”。
var text = "ŌōṒṓṐṑȪȫ";
var buffer = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, Encoding.Unicode.GetBytes(text));
var result = Encoding.ASCII.GetString(buffer);
有没有办法在.NET中执行此操作?我知道我可以创建一个地图,将“ŌōṒṓṐṑȪȫ”等字符链接到“o”等等其他字符,但我希望已经有一种内置方法可以做到这一点。
答案 0 :(得分:2)
编辑:
忽略原文。
String类有一组重载的Normalize()方法。
ORIGINAL:
我不知道.NET内置的任何方法,但是这两篇文章和一些Win32 pinvoke你应该设置:
答案 1 :(得分:1)
您不需要进行规范化,这非常耗时,而且还有更好的选择。
大多数字符串比较操作都有一个带有CompareOptions的风格。 您可以将其用于CompareOptions:
static_cast<CompareOptions>(CompareOptions::IgnoreCase | CompareOptions::IgnoreNonSpace)
请参阅CompareInfo类http://msdn.microsoft.com/en-us/library/2z428sw8.aspx