提取汉字拼音,发现有些字不能提取?求解决!!

太振科技 2009-09-28 09:51:07
不能转化的字:

嵊、衢、

如何解决

下面是代码

============================
'取出首字母
function getpychar(char)
dim tmp
tmp=65536+asc(char)

if(tmp>=45217 and tmp<=45252) then
getpychar= "A"
elseif(tmp>=45253 and tmp<=45760) then
getpychar= "B"
elseif(tmp>=45761 and tmp<=46317) then
getpychar= "C"
elseif(tmp>=46318 and tmp<=46825) then
getpychar= "D"
elseif(tmp>=46826 and tmp<=47009) then
getpychar= "E"
elseif(tmp>=47010 and tmp<=47296) then
getpychar= "F"
elseif(tmp>=47297 and tmp<=47613) then
getpychar= "G"
elseif(tmp>=47614 and tmp<=48118) then
getpychar= "H"
elseif(tmp>=48119 and tmp<=49061) then
getpychar= "J"
elseif(tmp>=49062 and tmp<=49323) then
getpychar= "K"
elseif(tmp>=49324 and tmp<=49895) then
getpychar= "L"
elseif(tmp>=49896 and tmp<=50370) then
getpychar= "M"
elseif(tmp>=50371 and tmp<=50613) then
getpychar= "N"
elseif(tmp>=50614 and tmp<=50621) then
getpychar= "O"
elseif(tmp>=50622 and tmp<=50905) then
getpychar= "P"
elseif(tmp>=50906 and tmp<=51386) then
getpychar= "Q"
elseif(tmp>=51387 and tmp<=51445) then
getpychar= "R"
elseif(tmp>=51446 and tmp<=52217) then
getpychar= "S"
elseif(tmp>=52218 and tmp<=52697) then
getpychar= "T"
elseif(tmp>=52698 and tmp<=52979) then
getpychar= "W"
elseif(tmp>=52980 and tmp<=53688) then
getpychar= "X"
elseif(tmp>=53689 and tmp<=54480) then
getpychar= "Y"
elseif(tmp>=54481 and tmp<=62289) then
getpychar= "Z"
else '如果不是中文,则不处理
getpychar=char
end if
end function

取第一个汉字首字母

function getpy(str)
getpy=getpychar(mid(str,1,1))
end function

...全文
507 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
太振科技 2009-09-28
  • 打赏
  • 举报
回复
看晕了,我用了最笨办法,找ASC码来定义了,

反正不能识别的字不多,将就着用用吧!
下面就是做的例子
elseif(tmp>=50906 and tmp<=51386) then
getpychar= "Q"
elseif(tmp=57833 or tmp=58330 ) then
getpychar= "Q"
hookee 2009-09-28
  • 打赏
  • 举报
回复

Response.Write GetPY("嵊衢", False, True)

Function GetPY(as_InputString,ReturnBig,isall)
Dim lc_FirstLetter '存放国标一级汉字不同读音的起始区位码对应读音
Dim ls_ch '临时单元
Dim ls_SecondSecTable '存放所有国标二级汉字读音
Dim ls_ReturnStr '返回串
Dim li_SecPosValue '存放国标一级汉字不同读音的起始区位码
Dim li_SectorCode '汉字区码
Dim li_PositionCode '汉字位码
Dim li_SecPosCode '汉字区位码
Dim li_offset '二级字库偏移量
Dim i
Dim j
as_InputString = Replace(as_InputString, " ", "")
li_SecPosValue = Array(1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249)
lc_FirstLetter = Array("A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z")
ls_SecondSecTable = ""
ls_SecondSecTable = ls_SecondSecTable + "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmrybywwccgznkydg"
ls_SecondSecTable = ls_SecondSecTable + "ttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffsspybgmxjbbyglbhls"
ls_SecondSecTable = ls_SecondSecTable + "smzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgdnzcbwhgxhqkmwfbpbq"
ls_SecondSecTable = ls_SecondSecTable + "dtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnmaeddksjngkcsgxlhzaybd"
ls_SecondSecTable = ls_SecondSecTable + "btsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqtrbcjthztqfrxchxmcjcjlx"
ls_SecondSecTable = ls_SecondSecTable + "qgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpxjqsrmebwgjlbjslyysmdxlcl"
ls_SecondSecTable = ls_SecondSecTable + "qkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbjflqgdzyqcaxbkclecjsznslyzh"
ls_SecondSecTable = ls_SecondSecTable + "lxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdjmmzngmmccgwzszxsjbznmlzdthcq"
ls_SecondSecTable = ls_SecondSecTable + "ydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaqlcdhjjasprchngjnlhlyyqyhwzpnccg"
ls_SecondSecTable = ls_SecondSecTable + "wwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfcxyhlschycjqppqagmnyxpfrkssbjlyxy"
ls_SecondSecTable = ls_SecondSecTable + "jjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajcxlypdccwqocwkccsbnhcpdyznbcyytycks"
ls_SecondSecTable = ls_SecondSecTable + "kybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtjhppqpqscfymmcmgbmhglgsllysdllljpchmj"
ls_SecondSecTable = ls_SecondSecTable + "hwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxomyqknmyblrthbcftpmgyxlchlhlzylxgssssccl"
ls_SecondSecTable = ls_SecondSecTable + "sldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhdchqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkb"
ls_SecondSecTable = ls_SecondSecTable + "jzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcbnmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwk"
ls_SecondSecTable = ls_SecondSecTable + "ybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljsxlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycw"
ls_SecondSecTable = ls_SecondSecTable + "cjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzljpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqz"
ls_SecondSecTable = ls_SecondSecTable + "lclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczhgyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznw"
ls_SecondSecTable = ls_SecondSecTable + "czcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycyhbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsb"
ls_SecondSecTable = ls_SecondSecTable + "gbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyqldkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsd"
ls_SecondSecTable = ls_SecondSecTable + "llyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyywhmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdk"
ls_SecondSecTable = ls_SecondSecTable + "djhnnyzqqfnqdmmgnydxmjgdhcdycbffallztdltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjyn"
ls_SecondSecTable = ls_SecondSecTable + "hprsjmkmpcklgdbqtfzswtfgglyplljzhgjjgypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqg"
ls_SecondSecTable = ls_SecondSecTable + "sdzsctarlltkzlgecllkjljjaqnbdggghfjtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhr"
ls_SecondSecTable = ls_SecondSecTable + "bjsnbrgjhxpdgdjybzgdlgcsezgxlblgyxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljs"
ls_SecondSecTable = ls_SecondSecTable + "cmbjhblyjlycblydpdqysxktbytdkdxjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakg"
ls_SecondSecTable = ls_SecondSecTable + "jgyhheznmshrphqqjchgmfprxcjgdychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqamm"
ls_SecondSecTable = ls_SecondSecTable + "mycctbshcptxxzzsmphfshmclmldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldg"
ls_SecondSecTable = ls_SecondSecTable + "dzdblzkycqnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzyg"
ls_SecondSecTable = ls_SecondSecTable + "cdxmzysctlkphtxhtlbjxjlxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgz"
ls_SecondSecTable = ls_SecondSecTable + "gszzqjxlwtjpfsyaslcjbtckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbs"
ls_SecondSecTable = ls_SecondSecTable + "aqdgylbxmmygszldydjmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz"
ls_ReturnStr = ""
dim getlength
if isall then
getlength = Len(as_InputString)
else
getlength = 1
end if
For i = 1 To getlength '依次处理as_InputString中每个字符
ls_ch = Mid(as_InputString, i, 1)
If Asc(ls_ch) < 128 And Asc(ls_ch) > 0 Then '非汉字
ls_ReturnStr = ls_ReturnStr + ls_ch '不变
Else '是汉字
li_SectorCode = Int("&H" + Left(Hex(Asc(ls_ch)), 2)) - 160 '区码
li_PositionCode = Int("&H" + Right(Hex(Asc(ls_ch)), 2)) - 160 '位码
li_SecPosCode = li_SectorCode * 100 + li_PositionCode '区位码
If li_SectorCode > 15 And li_SectorCode < 56 Then '第一个字符
For j = 23 To 1 Step -1 '找声母
If li_SecPosCode >= li_SecPosValue(j - 1) Then
ls_ReturnStr = ls_ReturnStr + lc_FirstLetter(j - 1)
Exit For
End If
Next
Else '第一个字符
li_offset = (li_SectorCode - 56) * 94 + li_PositionCode '计算偏移量
If li_offset >= 1 And li_offset <= 3008 Then '二区汉字
ls_ReturnStr = ls_ReturnStr + Mid(ls_SecondSecTable, li_offset, 1) '取出此字声母
End If
End If
End If
Next
If ReturnBig Then
GetPY = UCase(ls_ReturnStr)
Else
GetPY = LCase(ls_ReturnStr)
End If
End Function
睿睿爸爸 2009-09-28
  • 打赏
  • 举报
回复
如果不能识别的字不多的话,做一个字符串,比如strSpecial="嵊衢"
转化前先判断一下汉字是否在这个列表里,如果在的话不调用下述程序,直接在你写的另一个列表中取出

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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