【问题标题】:Convert Hebrew chars to English将希伯来字符转换为英语
【发布时间】:2013-02-17 19:57:43
【问题描述】:

为了防止将我的问题标记为“重复”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);
 }

也不行。

【问题讨论】:

  • 也许我在这里很简单,但这究竟应该如何工作?希伯来语有 26 个字母,英语有 22 个。
  • 我认为它的工作方式应该与映射到英语-希伯来语键盘上的方式相同。
  • 当您输入希伯来语时,.NET 已经有了 unicode 值,而不是任何 ASCII 等。您无法从中获取字节,转换并假设它会转换。
  • 你是想说我唯一的出路是在一些长的 switch 语句中手动映射代码吗?
  • 我正在尝试了解您想要实现的目标。您是否认为当用户在希伯来语键盘上尝试输入英语时,您想恢复原始尝试的英语?

标签: c# asp.net .net wpf


【解决方案1】:

当字符串出现在 .NET 中时,要知道键盘发出了什么已经太迟了。

为了找出被点击的键盘位置,您需要将希伯来语位置映射到英语位置 - Dictionary<char,char> 是一个很好的候选数据结构。

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多