2013-02-17 116 views
0

爲了防止標誌着我作爲「重複」 here是「答案」的類似的問題,不幸的是不work.So我的情況下,我輸入希伯來語文本文本框,我需要的問題將每個輸入的字母轉換爲標準的字符代碼,如ASCII表格(十進制)英文字符。因爲直接轉換希伯來字符返回完全不同的代碼(這些似乎是Unicode),我需要將希伯來語輸入轉換爲英文。我爲希伯來語輸入轉換嘗試了不同的編碼器類型:Unicode,UTF8,UTF16,「Windows-1255」。我總是得到「?」 。轉換希伯來字符以英語

因此,例如,上面提到的問題可能的解決方案是這樣的:

public static string convertUTF8ASCII(string initialString) 
    { 
    byte[] unicodeBytes = Encoding.Unicode.GetBytes(initialString); 
    byte[] asciiBytes = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, unicodeBytes); 
    return Encoding.GetEncoding("Windows-1255").GetString(asciiBytes); 
    } 

而且這是行不通的。

我也嘗試過這樣的事情:

public static int GetASCIICodeFromUnicode(string letter){ 
    Encoding ascii = Encoding.GetEncoding("Windows-1252"); 
    Encoding unicode = Encoding.GetEncoding("Windows-1255"); 

    byte[] unicodeBytes = unicode.GetBytes(letter); 

    byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes); 

    char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)]; 
    ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0); 
    asciiBytes.Length, asciiChars, 0); 
    string asciiString = new string(asciiChars); 

    return (int)Convert.ToChar(asciiString); 
} 

也不起作用。

+1

也許我在這裏很簡單,但究竟該如何工作?希伯來語有26個英文字母,英文22. – Oded 2013-02-17 20:01:04

+0

它應該和英文 - 希伯來鍵盤上的映射方式一樣,我認爲。 – 2013-02-17 20:02:19

+1

當您輸入希伯來語時,.NET已經具有_unicode_值,而不是任何ASCII或類似值。你不能從中得到字節,轉換並假設它會轉換。 – Oded 2013-02-17 20:04:15

回答

1

當你在.NET中出現字符串時,發現鍵盤發出的內容已經太晚了。

爲了找出鍵盤位置被點擊你需要有希伯來語的英語位置的映射 - 一個Dictionary<char,char>是一個很好的候選數據結構。