Access

Revelando los personajes ocultos en tus cuerdas

¿Alguna vez ha encontrado comportamientos misteriosos al trabajar con cadenas o texto de diversas fuentes? No estás solo. Muchos desarrolladores se han enfrentado a situaciones en las que Len() de una cadena no coincide con lo que se ve visualmente en la pantalla. Quizás haya obtenido una cadena que se muestra como una serie de ‘?’ personajes,

Los culpables: caracteres Unicode y no imprimibles

Estas desconcertantes discrepancias a menudo surgen de caracteres Unicode y no imprimibles. Estos caracteres furtivos pueden ser parte de sus datos, pero no necesariamente aparecen cuando se muestran. Son como invitados invisibles en una fiesta: ¡presentes pero invisibles!

Revelando lo invisible: usando AscW()

Entonces, ¿cómo desenmascaramos a estos personajes ocultos? Como no podemos simplemente imprimirlos en la pantalla, necesitamos convertirlos a sus valores numéricos. Aquí es donde la función AscW() viene a nuestro rescate.
Una solución simple pero poderosa

El proceso es sencillo:

  • Iterar sobre cada carácter de la cadena.
  • Aplicar la función AscW() a cada carácter.
  • Mostrar o analizar los valores numéricos resultantes.

Aquí hay una función simple que hace precisamente eso:

Function ConvertStringToChrWValues(inputString As String, _
                             Optional sDelimiter As String = " ") As String
    On Error GoTo Error_Handler
    Dim sOutput               As String
    Dim lCounter              As Long

    For lCounter = 1 To Len(inputString)
        If lCounter > 1 Then sOutput = sOutput & sDelimiter
        sOutput = sOutput & CStr(AscW(Mid(inputString, lCounter, 1)))
    Next lCounter

    ConvertStringToChrWValues = sOutput

Error_Handler_Exit:
    On Error Resume Next
    Exit Function

Error_Handler:
    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
           "Error Source: ConvertStringToChrWValues" & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Description: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
           , vbOKOnly + vbCritical, "An Error has Occurred!"
    Resume Error_Handler_Exit
End Function

Ahora, puedes lanzarle cualquier cadena que desees, ¡esta función podrá mostrarte todos los caracteres que contiene!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba