2013年9月25日 星期三

Unicode及ASCII 之間的編碼轉換

以下擷取於藍色小舖http://www.blueshop.com.tw/board/show.asp?subcde=BRD20071225001912W5A
Function Chg_UNI(str) 'ASCII轉Unicode
  dim old,new_w,iStr
  old = str
  new_w = ""
  for iStr = 1 to len(str)
   if ascw(mid(old,iStr,1)) < 0 then
    new_w = new_w & "&#" & ascw(mid(old,iStr,1))+65536 & ";"
   elseif ascw(mid(old,iStr,1))>0 and ascw(mid(old,iStr,1))<127 then
    new_w = new_w & mid(old,iStr,1)
   else
    new_w = new_w & "&#" & ascw(mid(old,iStr,1)) & ";"
   end if
  next
  Chg_UNI=new_w
End Function

Function Chg_ASC(str) 'Unicode轉ASCII
  dim xStr,yStr,zStr,temp_word,flag
  flag=0
  xStr = instr(flag+1,str,"&#")
  do until xStr = 0 or xStr < flag
   xStr = instr(flag+1,str,"&#")
   if xStr <> 0 then
    yStr = mid(str,xStr,8)
    select case instr(yStr,";")
     case 8
      zStr = chrw(mid(yStr,3,5))
     case 7
      zStr = chrw(mid(yStr,3,4))
     case 6
      zStr = chrw(mid(yStr,3,3))
     case 5
      zStr = chrw(mid(yStr,3,2))
    end select
    if instr(yStr,";") > 4 and asc(zStr) <> 63 then
     str = replace(str,left(yStr,instr(yStr,";")),zStr)
    end if
    flag = xStr
   end if
  loop
  Chg_ASC = str
End Function