VB汉字简繁体转换

来源:互联网 发布:安卓看片软件哪个好 编辑:程序博客网 时间:2024/05/16 00:34
 
  1. '
  2. '简繁体转换(smBig2GB)
  3. '
  4. Option Explicit
  5. Dim BigData As Variant
  6. Dim GbData As Variant
  7. '
  8. '将BIG码转为GB码
  9. '函数:BigToGB
  10. '参数:BigStr BIG码字符串
  11. '返回值:GB码字符串
  12. Function BigToGB(BigStr As StringAs String
  13.     Dim I As Long, Y As Long
  14.     Dim BigByte() As Byte
  15.     Dim GbByte() As Byte
  16.     
  17.     If BigStr = "" Then
  18.         BigToGB = ""
  19.         Exit Function
  20.     End If
  21.     
  22.     BigByte = StrConv(BigStr, vbFromUnicode)
  23.     Y = UBound(BigByte)
  24.     ReDim GbByte(0 To Y)
  25.     For I = 0 To Y
  26.         If I = Y Then
  27.             GbByte(I) = BigByte(I)
  28.             Exit For
  29.         End If
  30.         If BigByte(I) < &HA1 Or BigByte(I + 1) < &H40 Then
  31.             GbByte(I) = BigByte(I)
  32.         Else
  33.             GbByte(I) = PBigType(BigByte(I), BigByte(I + 1)).loChar
  34.             GbByte(I + 1) = PBigType(BigByte(I), BigByte(I + 1)).hiChar
  35.             I = I + 1
  36.         End If
  37.     Next I
  38.     BigToGB = StrConv(GbByte, vbUnicode)
  39.     Erase GbByte
  40. End Function
  41. '
  42. '将GB码转为BIG码
  43. '函数:GBToBig
  44. '参数:GBStr GB码字符串
  45. '返回值:BIG码字符串
  46. Function GBToBig(GBStr As StringAs String
  47.     Dim I As Long, Y As Long
  48.     Dim GbByte() As Byte
  49.     Dim BigByte() As Byte
  50.     
  51.     If GBStr = "" Then
  52.         GBToBig = ""
  53.         Exit Function
  54.     End If
  55.     
  56.     GbByte = StrConv(GBStr, vbFromUnicode)
  57.     Y = UBound(GbByte)
  58.     ReDim BigByte(0 To Y)
  59.     
  60.     For I = 0 To Y
  61.         If I = Y Then
  62.             BigByte(I) = GbByte(I)
  63.             Exit For
  64.         End If
  65.         If GbByte(I) < &HA1 Or GbByte(I + 1) < &HA1 Then
  66.             BigByte(I) = GbByte(I)
  67.         Else
  68.             If GbByte(I) < &HB0 And GbByte(I + 1) >= &HA1 Then
  69.                 BigByte(I) = PGbType(GbByte(I) + 6, GbByte(I + 1)).loChar
  70.                 BigByte(I + 1) = PGbType(GbByte(I) + 6, GbByte(I + 1)).hiChar
  71.             Else
  72.                 BigByte(I) = PGbType(GbByte(I), GbByte(I + 1)).loChar
  73.                 BigByte(I + 1) = PGbType(GbByte(I), GbByte(I + 1)).hiChar
  74.             End If
  75.             I = I + 1
  76.         End If
  77.     Next I
  78.     GBToBig = StrConv(BigByte, vbUnicode)
  79.     Erase BigByte
  80. End Function
  81. Private Sub Class_Initialize()
  82.     Dim I As Long
  83.     Dim J As Long
  84.     Dim iLen As Long
  85.     BigData = LoadResData(100, "CUSTOM")    '//读取Big5字库
  86.     GbData = LoadResData(101, "CUSTOM")     '//读取GB字库
  87.     For I = &HA1 To 
  88.         For J = &H40 To 
  89.             PBigType(I, J).loChar = BigData(iLen)
  90.             PBigType(I, J).hiChar = BigData(iLen + 1)
  91.             iLen = iLen + 2
  92.         Next J
  93.     Next I
  94.     iLen = 0
  95.     For I = &HA7 To 
  96.         For J = &HA1 To 
  97.             PGbType(I, J).loChar = GbData(iLen)
  98.             PGbType(I, J).hiChar = GbData(iLen + 1)
  99.             iLen = iLen + 2
  100.         Next J
  101.     Next I
  102. End Sub
原创粉丝点击