Sub UTF2UNI(s2match As String, CharSet As String) As String
Dim m As Matcher
Dim Parts As List
Dim cnv As ByteConverter
Dim i, j As Int
Dim i2s As String
Dim SupportedEncodings() As String
Dim booCharSetIsValid As Boolean
Parts.Initialize
SupportedEncodings = cnv.SupportedEncodings
booCharSetIsValid = False
For j = 0 To SupportedEncodings.Length - 1
If CharSet.ToUpperCase = SupportedEncodings(j).ToUpperCase Then
booCharSetIsValid = True
End If
Next
If booCharSetIsValid = True Then
If CharSet.Trim.ToLowerCase = "utf-8" Then
m = Regex.Matcher("=[0-9a-fA-F][0-9a-fA-F]=[0-9a-fA-F][0-9a-fA-F]",s2match)
i = -1
Do While m.Find = True
i = i + 1
i2s = i
Do While i2s.Trim.Length < 2
i2s = "0" & i2s
Loop
Parts.Add(m.Group(0).Replace("=",""))
s2match = s2match.Replace(m.Group(0),"~" & i2s)
m = Regex.Matcher("=[0-9a-fA-F][0-9a-fA-F]=[0-9a-fA-F][0-9a-fA-F]",s2match)
Loop
If Parts.Size > 0 Then
For i = 0 To Parts.Size - 1
i2s = i
Do While i2s.Trim.Length < 2
i2s = "0" & i2s
Loop
s2match = s2match.Replace("~" & i2s, cnv.StringFromBytes(cnv.HexToBytes(Parts.Get(i)), CharSet))
Next
End If
Else
s2match = s2match.Trim
s2match = s2match.Replace(" ","=20")
If s2match.EndsWith("=") = True Then
s2match = s2match.SubString2(0,s2match.Length-1)
End If
m = Regex.Matcher("=[0-9a-fA-F][0-9a-fA-F]",s2match)
i = -1
Do While m.Find = True
i = i + 1
i2s = i
Do While i2s.Trim.Length < 2
i2s = "0" & i2s
Loop
Parts.Add(m.Group(0).Replace("=",""))
s2match = s2match.Replace(m.Group(0),"~" & i2s)
m = Regex.Matcher("=[0-9a-fA-F][0-9a-fA-F]",s2match)
Loop
If Parts.Size > 0 Then
For i = 0 To Parts.Size - 1
i2s = i
Do While i2s.Trim.Length < 2
i2s = "0" & i2s
Loop
s2match = s2match.Replace("~" & i2s, cnv.StringFromBytes(cnv.HexToBytes(Parts.Get(i)), CharSet))
Next
End If
End If
End If
Return s2match
End Sub