汉字怎样转换为拼音?

fxw 2001-08-18 12:16:20
我想将任一汉字转换为拼音,在怎么做呢?
...全文
449 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feifeitutu 2001-09-18
  • 打赏
  • 举报
回复
up
fxw 2001-09-01
  • 打赏
  • 举报
回复
 
 谢谢各位

 由于分不多,就给neocosmic(不顾一切)一个人好了,他付出了跟多的劳动。
 
 
hellion 2001-08-25
  • 打赏
  • 举报
回复
我有现成的,就是多音字比较麻烦
neocosmic 2001-08-24
  • 打赏
  • 举报
回复
我们在编写数据库应用软件时,常常需要设计对人名、地名等各种汉字信息进行查找的功能。
如果只允许用户输入汉字来查找,会使得查找功能不灵活,不完善;但如果允许用户输入汉
字的拼音作为查找条件,除了多设一个储存汉字拼音的字段外,最大的问题在于输入资料时
还得额外输入汉字的拼音,大大增加了输入的工作量。能不能通过编程的手段在输入汉字资
料时自动产生其对应的拼音,从而解决这个矛盾呢?答案是肯定的,下面介绍的方法就能让
您轻松实现这个目的,为简单叙述起见,我们假设只需要产生汉字的声母,而不要韵母(无
声母的则取韵母的第一个字母)。

  要自动产生拼音,首先必须有个汉字-拼音对照表。去哪里找这个表?可自己动手做一
个。做表的方法有点复杂,要先用工具生成汉字与拼音对应的文本文件,再用编程的手段将
需要的内容加在数据表中。下面介绍一种具体的操作方法:

  第一步,利用“Windows 95附件”中“输入法生成器”的逆转化功能,将拼音输入法的
码表文件“c:\windows\system\winpy.mb”逆转换为文本文件“c:\winpy.txt”(当然转换
后的文件任您取名和指定位置)。用写字板打开此文本文件,可以看到这样的文字:

  [Description]

  Name=全拼
  MaxCodes=12
  MaxElement=1
  UsedCodes=abcdefghijklmnopqrstuvwxyz
  WildChar=?
  ……
  [Text]
  啊a
  阿a
  ……
  阿爸aba
  阿昌achang
  ……

  显然,最前面12行此时对于我们来讲是完全无用的,可用手工将之删除。另外,文件中
还有大量词的编码,如“阿爸aba”、“阿昌achang”等,对我们也是无用的,如何将之去
掉使得文件中只保留单字及其编码呢?用手工显然太麻烦,只能靠一段小程序了。我们这样
考虑,如果某行是单字及其编码,则这行的第三个字符肯定是字母,可以取这行的前三个字
符存放在另一个文件中;而如果某行是词,则第三个字符是汉字的一部分,其ASC值在128以
上,我们就不用管它。

  下面给出这段小程序:

  newfile=Fcreate(′c:\py.txt′)&&创建文件,用于储存单字及其编码的文本
  oldfile=Fopen(′c:\winpy.txt′) && 打开文件
  Fseek(oldfile, 0) && 移动指针到文件头
  Do while not feof(oldfile)
    c=left(Fgets(oldfile),3)
   if asc(right(c,1)) < 128 then
     cc=chr(34)-left(c,2)-chr(34)-″,″-chr(34)-right(c,1)-chr(34)
   FPUTS(newfile, cc) &&以″字″,″z″ 这样的格式写在新文件里
   endif  
  Enddo
   Fclose(newfile) && 关闭文件
   Fclose(oldfile) && 关闭文件
  creat table py (汉字 c(2),拼音 c(1))&&创建新表
  use py &&打开此表
  append from c:\py.txt type delimited
   &&从文本中追加数据
  use

  运行这段程序后,一个存有汉字和拼音首个字母的表PY就产生了。将这个表加入到我
们的数据库中,并根据汉字建立索引,就可以使用这个表了。

  接下来要解决的问题是:输入汉字后,如何将之转换为拼音呢?假设在一个表单里已
经建立了一个名为“汉字”的文本框用于输入汉字和一个名为“拼音”的文本框用于显示
汉字对应的拼音。我们可在“汉字”这个文本框的LostFoucs事件中写入如下代码:

  local a,b,c
  c=″ ″
  b=″ ″
  a=thisform.汉字.value
  select py &&假设此表在此之前已经打开且已经指定索引
  for i=2 to len(a) step 2
   store right(left((a),i),2) to b
   seek b
   store c-py.拼音 to c
  next i  
  thisform.拼音.value=c

  至此,自动产生拼音的工作可以说成功完成了。至于如何添加在你的资料表上,就不
必罗嗦了。这个方法为我们设计数据库应用软件带来了极大的好处,希望对大家有点启发
作用。
wpby 2001-08-18
  • 打赏
  • 举报
回复
你要有一个汉字字典库。
格式:
汉字 拼音(大概就是这样)

然后从库中找出你输入的汉字,读出拼音就行了。

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧