怎样取得汉字的拼音

 

http://topic.csdn.net/t/20021015/21/1099919.html
Hawk_sun (孙岳)


关于怎样取得汉字的拼音,一共有三种办法,一一列举如下:

1。通过输入法的逆转换功能
    目前肯定支持该方法的输入法有微软拼音输入法,同时微软也提供了一套API用以实现这种转换。
    这种方法的优点是能解决多音字问题,缺点是用户必须安装微软拼音输入法。使用这种方法的基本步骤是:
1〉查询本机输入法列表,使用API函数GetKeyboardLayoutList。
2〉得到输入法的名称,使用API函数ImmEscape。
3〉看看这个输入法是否支持Reverse   Conversion功能,使用API函数
      ImmGetConversionList。
4〉如果该种输入法支持Reverse   Conversion功能,继续使用ImmGetConversionList函数来获得指定汉字的拼音。

关于这几个API函数的使用和要注意的问题你们可以查询MSDN.

我下面要讲的第二种办法,也就是上面诸位提到的一种很直接的办法,就是利用查表的办法,但是查表也有讲究,因为这是与效率相关的,表格的组织形式直接影响查表的速度。我介绍一点我的经验。

1〉获得GB2312种所有汉字的一张读音表。这种表格网上到处都是,如果确实没有,就利用windows的码表逆转换功能,将拼音输入法的码表文件转换成字根文件,但是这里有个缺点,就是无法取得声调信息。但是网络上的各种标准化组织的网站上又很多提供这个文件下载的网站,我曾经到过一个Unicode的标准化推广网站,上面就有 "GB码---Unicode---拼音 "的对应关系表,可惜我忘记了网站的地址,相信很多人自己已经有了这样一张表。

2> 构造一个散列函数,该函数记为y=f(x);
    如果你是利用Unicode作为查表的索引,那么x就应该代表该汉字的Unicode,y就代表该汉字在文件中的偏移量,如果每个汉字在文件中的存放格式类似于A:B,其中A为该汉字,B为该汉字的拼音字符串,那么y+3这个偏移量就代表拼音的起始位置.假定每个条目用15个字节来存放,那么你只需要读出y+3到y+15的字符串就能取到汉字的拼音.
    同样,如果你利用GB码或者Big5码或者UTF8编码,那么x就表示这个编码,y同样表示这个位置.
从上述算法看,为了避免查表时文件指针的频繁前后定位,同时也为了保证y的唯一性,对散列函数的构造有特殊的要求,即算出来的位置不能重复,不能覆盖,且要保证有15个字节的偏移余量.

3> 构造好散列函数之后,利用现成的汉字--拼音对应表构造一个高效率的表文件,将汉字和其拼音一一读入,按照散列函数将汉字和拼音一一写入对应的位置.于是得到一个新的码表文件.

4> 最后,在你的程序中可以随心所欲的利用这个文件来查拼音.

再来讲第三种方法:
利用IFELLanguage接口.在windowsNt以及以后的版本中,微软公司内置了一个IFELLanguage接口,这个接口实现了对系统本地编码表的访问.该接口包含很多方法.(稍候我会继续!!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值