很久以来没有一个很好的,能够在UTF-8编码的ASP中汉字生成拼音的函数。当使用ASCW得到一个汉字的ASCII码值的时候也是没有任何规律来获得一个汉字的拼音。测试了很久也没有找到一个很好的办法,后来发现在MS SQL中当Chinese_PRC_CS_AS_KS_WS排序时,可以划定汉字拼音的区域,经过整理,终于可以实现在UTF-8编码下汉字转拼音,随时制作出来了MS SQL汉字转拼音函数。但是不是所有的网站都能够使用MS SQL 数据库,经测试在Access数据库中汉字的排序和MS SQL中的Chinese_PRC_CS_AS_KS_WS排序一致,这是一个不小的惊喜,所以制作出来一份“(UTF-8)ASP汉字转拼音函数(附Access数据库)”。不过完全依靠ASP程序是完成不了的,所以需要附加一个拼音对照数据库。
希望这个程序能够很好的服务与大家,也请大家转载和使用的时候保留作者信息。
<%
'---------------------------------------------------------------
' Hanzi to Pinyin Function
' Copyright (c) 2009 Sean.Leo
' 流香羽/27879669
' Date: 2009-06-02 09:35
'---------------------------------------------------------------
Function Hanzi2Pinyin(strHanzi)
Dim objConn
Dim chrHanzi
Dim intHanziAsc
Dim i
Hanzi2Pinyin = ""
If strHanzi > "" Then
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & server.mappath("pinyin.mdb") '汉字拼音对照数据库
For i = 1 to Len(strHanzi)
chrHanzi = Mid(strHanzi, i, 1)
intHanziAsc = Ascw(chrHanzi)
If intHanziAsc < 0 Then intHanziAsc = intHanziAsc + 65536
If intHanziAsc < 127 Then '英文
Hanzi2Pinyin = Hanzi2Pinyin & chrHanzi
ElseIf intHanziAsc >= 19968 and intHanziAsc <=33367 Then '汉字
Hanzi2Pinyin = Hanzi2Pinyin & objConn.Execute("select top 1 Pinyin from CollatePinyins where Word >= '" & chrHanzi & "' order by Word asc")(0)
Else '其他标点字符
Hanzi2Pinyin = Hanzi2Pinyin & "-"
End If
Next
objConn.Close
Set objConn = Nothing
End If
End Function
' 测试
response.write Hanzi2Pinyin("欢迎使用流香羽的汉字转拼音函数")
%>