繁体   English   中英

如何在C#中将拼音字符串转换为中文

[英]How to convert a pinyin string to chinese in C#

我的WPF应用程序中有一个触摸屏键盘,我希望允许用户用中文书写。

我看到Windows中有一个IME,可以用拼音写中文。 它很好用,但是我想为我的WPF应用程序自定义它。 (特别是候选人名单)。 我没有找到任何文档。

这样的想法是,用户使用虚拟键盘用拼音进行书写,并且在文本框旁边将有一个带有中文表意文字的选择列表。

您对此有何建议? 也许有一个库(不是来自Microsoft)可以做到的,在这种情况下,我将不会使用MS的IME?

不确定是否有可用的OS(开源)软件包。 但是,从理论上讲,构建这种库并不是很困难。 在中文中,大约有1300种单音:初始+结束+音调。 每个声音都有一组汉字,从1到130个字符不等。

您可以定义所有拼音的数组:

string[] pinyins = new string[] {
  "a:c1c2c3...",      // pinyin 1 a: character1 character2...
  ...
  "zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character...
};

上面的数组是将拼音映射到中文的基础(汉字和拼音是unicode字符串)。 然后,对于每个拼音输入声音,通过类似以下功能的字符列表:

string getCharacters(string aPinyin) {
   string characters = null;
   foreach(string item in pinyins) {
      string[] temp = item.split(':');
      if (temp[0].Equals(aPinyin)) {
          charaters = temp[1];
          break;
      }
   }
   return characters;
}

很久以前,我写了JavaScipt,定义了拼音和汉字之间的关系。 在我的博客: “从汉字中获取拼音”中 ,可以通过在上下文菜单中查看源代码或检查元素来找到脚本。 在我的博客中,该脚本用于将中文转换为拼音,但该关系可以用作参考。

在此处输入图片说明

要添加智能拼音功能-显示拼音的单词列表,可以通过以类似的模式定义所有常用单词来完成:拼音:单词。

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=7D1DF9CE-4AEE-467F-996E-BEC826C5DAA2

http://www.microsoft.com/download/zh-CN/details.aspx?displaylang=zh-CN&id=15251

Microsoft实际上为此具有良好的组件/库,但它们在Visual Studio International Feature Pack中隐藏在这里。

注意,您需要提供基本库的1.0 SR 1,而2.0需要添加许多WinForms或WPF控件。

(已于2017年10月26日更新。许多人已经根据Microsoft的代码在NuGet.org上发布了NuGet软件包,因此您也可以签出这些软件包。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM