Sub DecodeQuotePrintable(q As String) As String
Dim m As Matcher
m = Regex.Matcher("=\?([^?]*)\?Q\?(.*)\?=$", q)
If m.Find Then
Dim charset As String
Dim data As String
charset = m.Group(1)
data = m.Group(2)
Dim bytes As List
bytes.Initialize
Dim i As Int
Do While i < data.Length
Dim c As String
c = data.CharAt(i)
If c = "_" Then
bytes.AddAll(" ".GetBytes(charset))
Else If c = "=" Then
Dim hex As String
hex = data.CharAt(i + 1) & data.CharAt(i + 2)
i = i + 2
bytes.Add(Bit.ParseInt(hex, 16))
Else
bytes.AddAll(c.GetBytes(charset))
End If
i = i + 1
Loop
Dim b(bytes.Size) As Byte
For i = 0 To bytes.Size - 1
b(i) = bytes.Get(i)
Next
Return BytesToString(b, 0, b.Length, charset)
Else
Return q
End If
End Sub
Sub Strip(value As String) As String
value = value.Replace("=20","")
value = value.Replace("=21","!")
value = value.Replace("=22",$"""$)
value = value.Replace("=23","#")
value = value.Replace("=24","$")
value = value.Replace("=25","%")
value = value.Replace("=26","&")
value = value.Replace("=27","'")
value = value.Replace("=28","(")
Return value
End Sub