防止将我的问题标记为"重复" here是"答案"对于类似的问题,遗憾的是没有工作。所以我有这样的情况,我将希伯来语文本输入到TextBox中,我需要将每个打字的字母转换为标准字符代码,如英语语言的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);
}
也不起作用。
答案 0 :(得分:1)
当你在.NET中出现字符串时,找出键盘发出的内容为时已晚。
为了找出点击的键盘位置,你需要有一个希伯来语到英语位置的映射 - Dictionary<char,char>
是一个很好的候选数据结构。< / p>