0

私の質問を「重複」としてマークするのを防ぐために、同様の質問への「回答」をここ に示しますが、残念ながら機能しません。したがって、ヘブライ語のテキストを TextBox に入力し、入力した各文字を標準の文字に変換する必要がある状況があります。英語のASCIIテーブル(10進数)のようなコード.ヘブライ文字を直接変換するとまったく異なるコードが返されるため(それらはUnicodeのようです)、ヘブライ語の入力を英語に変換する必要があります. ヘブライ語入力変換用にさまざまな Encoder タイプを試しました: 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);
 }

どちらも機能しません。

4

1 に答える 1

1

.NET に表示される文字列を取得するまでには、キーボードが何を送信したかを知るには遅すぎます。

クリックされたキーボードの位置を調べるには、ヘブライ語から英語の位置へのマッピングが必要です。a は、Dictionary<char,char>このデータ構造の候補として適しています。

于 2013-02-17T20:15:44.177 に答える