To prevent marking my question as "duplicate" here is the "answer" to the similar question , which unfortunately doesn’t work.So I have the situation where I type Hebrew text into TextBox and I need to convert each typed letter into standard char codes like those in ASCII table (decimal) for English language.Because converting Hebrew chars directly returns entirely different code( those seem to be Unicode ) I need to convert Hebrew input into English. I tried different Encoder types for Hebrew input conversion :Unicode , UTF8 , UTF16 , "Windows-1255" .I am always getting "?" .
So for example ,possible solution from the question mentioned above is this:
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);
}
And it doesn’t work.
I have also tried something like this :
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);
}
Doesn’t work either.
By the time you get strings appearing in .NET, it is too late to find out what the keyboard sent out.
In order to find out what keyboard position was clicked you will need to have a mapping of the Hebrew to English positions – a
Dictionary<char,char>is a good candidate data structure for this.