redirect_to :future #思维驱动 » Blog Archive » 将汉字转换为拼音或是五笔码

将汉字转换为拼音或是五笔码

自己没有这个需求,突然有人提起,说说想法。

通常我们都很习惯用五笔或是拼音打字,但是如果程序里想将汉字转成拼音怎么做呢?当然方法有复杂有简单,最简单的就是我们反向思维一下(唉,谁叫我们叫做”思维驱动”呢,哈哈吹一下牛),既然我们打拼音”da”能变成汉字”大”,然而汉字编码又不能说明如何对应的关系,那么输入法中必然存在一种从拼音到汉字(或是汉字到拼音,以及五笔等等)的对应关系。我们只要找到这种对应的列表相互转换不就解决了。

看了看我机子上装的两种输入法,紫光拼音和万能五笔,发现紫光拼音的字库是二进制文件一时无法利用,然后发现万能五笔的安装目录下有很多xxx.txt的文件,打开一看果然就各种编码的对应关系。比如:qpzima.txt(想来应该是”全拼字码”)的内容为:
啊 a
阿 a
埃 ai
挨 ai
哎 ai
唉 ai
哀 ai
皑 ai
癌 ai
蔼 ai
矮 ai
略…………
这不就是汉字与拼音的对应关系嘛。既然有了这个字库我们简单的写个程序,很容易就实现从汉字到拼音的转换了(代码就不写了)

万能五笔目录下还包括很多字库请自行研究,当然这里只是提供一种思路至于用不用它的字库,还是你自己决定,不过提醒您注意版权(如果这个有版权的话)。

为了负责起见,特意上网搜了一下,在search.cpan.org上找到一个国人写的perl的汉字转拼音模块Lingua::Han::PinYin ,有兴趣的朋友可以下来试试,它就是用Unicode:UniHan的对照表来实现的,不过我试了试转换整个文档,似乎效果不是那么的好,特别是遇到全角字符时转换完成后会成乱码。

Lingua::Han::PinYin作者主页了解到Unicode.org提供拼音对照表:Unicode::Unihan 下载,而且里面提供的对照还包含(1,2,3,4)四种声调(实在是不懂怎么描述了,音标?)详见:http://www.fayland.org/journal/Han-PinYin.html

看完啦?再看看我们最近的10条记录对您是否有用呢?

要不,再找找其它内容:




或者给我们留下些意见、建议,这将给我们莫大的鼓励,促使我们做得更好。