Esta función la hice porque al leer datos de planos dwg, con la librería LibreDWG, algunos textos no se representaban correctamente debido a errores de codificación.
Tal vez luego pueda evolucionar a una versión mas general y amplia que abarque mas casos.
Código:
'' <b>RAD Extension.</b><br>
'' Returns a string with all its characters converted to ascii or utf-8 when bad codification ocurr.
Static Public Function Flat(s As String) As String
Dim k As Integer = 1
Dim q As Integer
Dim r As Integer
Dim uni As String
Dim stx As New String[]
Dim u As String
Dim rep As String
Dim i As Integer
Repeat
q = InStr(s, "\\U+", k)
If q > 0 Then
Inc r
uni = String.Mid(s, q, 7)
stx.Add(uni)
k = q + String.Len("\\U+")
Endif
Until InStr(s, "\\U+", k) = 0 Or k > String.Len(s)
For Each u In stx
i = Val("&h" & String.Mid(u, 4, 4) & "&")
rep = String.Chr(i)
s = Replace(s, u, rep)
Next
Return s
End
Saludos.