Fri. 2000.07.14

VBからnkf32.dllを呼ぶと、何故かEuc -> Sjis変換が出来ない。jis sjisはうまくいくんだけどなぁ。で、しょうがないので、変換テーブルを見つけてきて、シコシコ書いた。なんだ、簡単ぢゃん(笑)。でも、Macで書いたからWinで動くかどうか良く分からないんだけどね。なんせ、Win版は自動Unicode変換するからなぁ…眠い。

Public Function eucTosjis(unsignedChar() As Byte) As String
  Dim SrcStr() As Byte
  Dim c1 As Byte, c2 As Byte
  Dim i As Double

  ReDim SrcStr(UBound(unsignedChar))

  For i = 0 To UBound(unsignedChar) - 1
    c1 = unsignedChar(i)
    c2 = unsignedChar(i + 1)
    If c1 > 160 Then
      If c1 Mod 2 = 0 Then
        c2 = c2 - 2
      Else
        c2 = c2 - 97
        If c2 > 126 Then
          c2 = c2 + 1
        End If
      End If

      If c1 < 223 Then
        c1 = Int((c1 + 1) / 2) + 48
      Else
        c1 = Int((c1 + 1) / 2) + 112
      End If

      SrcStr(i) = c1
      SrcStr(i + 1) = c2
      i = i + 1
    Else
      SrcStr(i) = c1
    End If
  Next i

  eucTosjis = SrcStr

End Function