Dim zFrom,zTo,i
zFrom = zStr
zTo = ""
For i = 1 To Len(zStr)
if ascw(mid(zFrom,i,1)) < 0 then
zTo = zTo & "&#" & AscW(mid(zFrom,i,1)) + 65536 & ";"
ElseIf AscW(mid(zFrom,i,1))>0 and AscW(mid(zFrom,i,1))<127 then
zTo = zTo & mid(zFrom,i,1)
Else
zTo = zTo & "&#" & AscW(mid(zFrom,i,1)) & ";"
End if
Next
AsciiToUnicode = zTo
End Function
Function UnicodeToAscii(zStr)
Dim x,y,z,flag
flag = 0
x = InStr(flag + 1,zStr,"&#")
Do Until x = 0 or x < flag
x = InStr(flag + 1,zStr,"&#")
if x <> 0 then
y = Mid(zStr,x,8)
Select Case InStr(y,";")
Case 8
z = ChrW(Mid(y,3,5))
Case 7
z = ChrW(Mid(y,3,4))
Case 6
z = ChrW(Mid(y,3,3))
Case 5
z = ChrW(Mid(y,3,2))
End Select
if InStr(y,";") > 4 And Asc(z) <> 63 then
zStr = Replace(zStr,Left(y,InStr(y,";")),z)
End if
flag = x
End if
Loop
UnicodeToAscii = zStr
End Function說明:
- Asc : 傳回字串中第一個字母的 ANSI 字元碼 。
- AscB 函數是用來處理包含位元組資料的字串, AscB 函數會傳回第一個位元組,而非第一個字元的字元碼。
- AscW 函數則是為了使用 Unicode 字元碼的 32 位元作業平台而設計的。此函數會傳回 Unicode 字元碼,而避免將 ANSI 碼轉換為 Unicode 碼處理。
- Chr : 傳回指定 ANSI 字元碼所代表的字元。
- ChrB 函數是使用於含有位元組資料的 String,而非傳回一個字元,其有可能是一或兩個位元組,而 ChrB 都是傳回一個位元組。
- ChrW 函數則是為使用 Unicode 字元碼的 32 位元作業平臺而設計的。ChrW 函數的引數必須是 Unicode 字元碼。
沒有留言:
張貼留言