2013-02-17 150 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>是一个很好的候选数据结构。