登陆 免费注册 提交网站
站长资讯 >> 站长学院 >> 网络编程
 2008-09-07 12:08浏览: 4291 次

ASP汉字转拼音,支持自定义特殊词语

这次更新了一下自已所用的博客程序,将生成静态文件时的文件名用文章标题的拼音,这就涉及到如何将文字转成拼音了,在网上大概的看了看,千篇一律的那个函数,应该只可以在GB2312下正常,也没有做太多考虑,这就拿出了曾在无忧系统的源码里看到过的一段用上了。

来看看下面的函数,加入少量注释:

这是一个自定义特殊词语的一个函数

以下内容为程序代码:
Function getEnglish(ByVal Str)

getEnglish = Str

getEnglish = Replace(getEnglish, "中国", " china ")

getEnglish = Replace(getEnglish, "策划", " plan ")

getEnglish = Replace(getEnglish, "免费", " free ")

getEnglish = Replace(getEnglish, "介绍", " intro ")

getEnglish = Replace(getEnglish, "技巧", " skill ")

getEnglish = Replace(getEnglish, "生活", " life ")

getEnglish = Replace(getEnglish, "活动", " activity ")

getEnglish = Replace(getEnglish, "工具", " tool ")

getEnglish = Replace(getEnglish, "联盟", " union ")

getEnglish = Replace(getEnglish, "注册", " register ")

getEnglish = Replace(getEnglish, "经验", " experience ")

getEnglish = Replace(getEnglish, "翻译", " translate ")

getEnglish = Replace(getEnglish, "项目", " item ")

getEnglish = Replace(getEnglish, "网站", " web-site ")

getEnglish = Replace(getEnglish, "英语", " english ")

getEnglish = Replace(getEnglish, "英文", " english ")

getEnglish = Replace(getEnglish, "雅虎", " yahoo ")

getEnglish = Replace(getEnglish, "新浪", " sina ")

getEnglish = Replace(getEnglish, "支付宝", " alipay ")

getEnglish = Replace(getEnglish, "交易", " trade ")

getEnglish = Replace(getEnglish, "网店", " b2c ")

getEnglish = Replace(getEnglish, "升级", " update ")

getEnglish = Replace(getEnglish, "杂志", " magazine ")

getEnglish = Replace(getEnglish, "空间", " space ")

getEnglish = Replace(getEnglish, "爱情", " love ")

getEnglish = Replace(getEnglish, "朋友", " friend ")

getEnglish = Replace(getEnglish, "友情", " friend ")

getEnglish = Replace(getEnglish, "链接", " like ")

getEnglish = Replace(getEnglish, "标签", " label ")

getEnglish = Replace(getEnglish, "运行", " running ")

getEnglish = Replace(getEnglish, "管理", " manager ")

getEnglish = Replace(getEnglish, "管理", " manage ")

getEnglish = Replace(getEnglish, "页面", " page ")

getEnglish = Replace(getEnglish, "模板", " template ")

getEnglish = Replace(getEnglish, "游戏", " game ")

getEnglish = Replace(getEnglish, "论坛", " forum ")

getEnglish = Replace(getEnglish, "新闻", " news ")

getEnglish = Replace(getEnglish, "音乐", " music ")

getEnglish = Replace(getEnglish, "帮助", " help ")

getEnglish = Replace(getEnglish, "优化", " optimize ")

getEnglish = Replace(getEnglish, "软件", " soft ")

getEnglish = Replace(getEnglish, "教程", " tech ")

getEnglish = Replace(getEnglish, "下载", " download ")

getEnglish = Replace(getEnglish, "搜索", " search ")

getEnglish = Replace(getEnglish, "引擎", " engine ")

getEnglish = Replace(getEnglish, "蜘蛛", " spider ")

getEnglish = Replace(getEnglish, "日志", " log ")

getEnglish = Replace(getEnglish, "博客", " blog ")

getEnglish = Replace(getEnglish, "百度", " baidu ")

getEnglish = Replace(getEnglish, "谷歌", " google ")

getEnglish = Replace(getEnglish, "邮箱", " mailbox ")

getEnglish = Replace(getEnglish, "邮件", " mail ")

getEnglish = Replace(getEnglish, "域名", " domain ")

getEnglish = Replace(getEnglish, "测试", " test")

getEnglish = Replace(getEnglish, "演示", " demo ")

getEnglish = Replace(getEnglish, "音乐", " music ")

getEnglish = Replace(getEnglish, "笑话", " joke ")

getEnglish = Replace(getEnglish, "产品", " product ")

getEnglish = Replace(getEnglish, "留言", " message ")

getEnglish = Replace(getEnglish, "反馈", " freedback ")

getEnglish = Replace(getEnglish, "评论", " comment ")

getEnglish = Replace(getEnglish, "推荐", " commend ")

getEnglish = Replace(getEnglish, "共享", " share ")

getEnglish = Replace(getEnglish, "资源", " resource ")

getEnglish = Replace(getEnglish, "插件", " plugins ")

getEnglish = Replace(getEnglish, "本本", " notebook ")

getEnglish = Replace(getEnglish, "电脑", " computer ")

getEnglish = Replace(getEnglish, "系统", " system ")

getEnglish = Replace(getEnglish, "学校", " school ")

getEnglish = Replace(getEnglish, "无忧", " 5u ")

getEnglish = Replace(getEnglish, "工作", " job ")

getEnglish = Replace(getEnglish, "信息", " info ")

getEnglish = Replace(getEnglish, "娱乐", " ent ")

getEnglish = Replace(getEnglish, "汽车", " car ")

getEnglish = Replace(getEnglish, "手机", " mobile ")

getEnglish = Replace(getEnglish, "网络", " network ")

getEnglish = Replace(getEnglish, "老板", " boss ")

getEnglish = Replace(getEnglish, "狗", " dog ")

getEnglish = Replace(getEnglish, "电视", " tv ")

getEnglish = Replace(getEnglish, "电影", " movie ")

End Function

然后就是最关键的函数pinyin(byval chinese) 他将中文转换到拼音

[code]function pinyin(byval chinese)

chinese = replace(chinese, "/", ""): chinese = replace(chinese, "\", "")

chinese = replace(chinese, "*", ""): chinese = replace(chinese, "]", "")

chinese = replace(chinese, "[", ""): chinese = replace(chinese, "}", "")

chinese = replace(chinese, "{", ""): chinese = replace(chinese, "'", "")

chinese = getEnglish(chinese) '在这里使用getEnglish先将特殊词语转换

dim pinyinstr, istr, iIsCn, IsCn

dim pinyinconn, rs, i, x

'在这里打开拼音库

'你也可以将拼音库的并入你的程序数据库里.

on error resume next

set pinyinconn = server.createobject("Adodb.connection")

pinyinconn.open "Provider=Microsoft.Jet.OLEdb.4.0;Data Source=" & server.mappath("pinyin.Asp")

if err then pinyin = "": set pinyinconn = nothing: exit function

IsCn = true

for i = 1 to len(chinese)

iIsCn = IsCn ' 获取上次是不是中文的值

istr = Mid(chinese, i, 1)

x = Asc(istr)

if (x >= 65 and x <= 90) or (x >= 97 and x <= 122) or (x >= 48 and x <= 57) or istr = " " then

IsCn = false ' 这些是英文,数字(保留字符),不改动

if istr = " " then istr = "-"

else

set rs = pinyinconn.execute("select Top 1 [pinyin] From [pinyin] Where [content] like '%" & istr & "%';")

if not rs.eof then

istr = lcase(rs(0)): IsCn = true ' 中文

else

IsCn = false

if istr = " " then istr = "-" else istr = "" ' 将空格转换成-,如果是其他字符则清除

end if

rs.close: set rs = nothing

end if

if iIsCn = IsCn then pinyinstr = pinyinstr & istr else pinyinstr = pinyinstr & "-" & istr

pinyinstr = replace(pinyinstr, "--", "-")

pinyinstr = replace(pinyinstr, "__", "_")

next

if right(pinyinstr, 1) = "-" then pinyinstr = left(pinyinstr, len(pinyinstr) - 1)

if right(pinyinstr, 1) = "_" then pinyinstr = left(pinyinstr, len(pinyinstr) - 1)

if left(pinyinstr, 1) = "-" then pinyinstr = right(pinyinstr, len(pinyinstr) - 1)

if left(pinyinstr, 1) = "_" then pinyinstr = right(pinyinstr, len(pinyinstr) - 1)

pinyinconn.close

set pinyinconn = nothing

pinyin = trim(pinyinstr)

end Function[/code]

使用方法:

以下内容为程序代码:
response.write pinyin("中国你好,欢迎来到中国!")

这种方法,转换成的拼音格式文件名非常友好,对SEO方面有要求的小程们,可以试试的

网站首页 - 关于我们 - 联系我们 - 友情链接 - 帮助中心
Copyright ©2007-2022 www.Aisila.com All Rights Reserved
苏ICP备20008864号-4