2012-12-07 44 views
4

我正在C#中創建一個小應用程序,以根據從SQL查詢傳遞的信息來搜索文件名。在從SQL查詢傳遞的數據中,有時(可能是由於國際訪問者到我公司的多個實例)名稱中包含國際字符。我們的文件名是英文字母,沒有特殊字符。刪除/替換國際字符

我想找到一種方法將國際字符轉換爲純英文字母字符,以便我可以完成此搜索?這可以通過數據庫查詢來完成,還是必須通過應用程序代碼完成?

例如:

埃爾韋需要轉換到埃爾韋

或者

MANANA需要如果你對MS-SQL服務器上運行轉換爲MANANA

回答

10
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)); 
} 
+1

完美,像一個魅力工作謝謝你。 – mattgcon

0

,看COLLATE在聯機幫助中。您可以在功能上動態更改編碼。

+1

我對SQL服務器運行,但是,我從代碼中運行動態SQL。但是,感謝COLLATE我將考慮實現在我的querybuilder – mattgcon