2010-10-23 9 views
7

¿Cómo puedo obtener el valor Unicode de un char?Obtener el valor Unicode de un char en VB

Por ejemplo, sé que puedo hacer esto con ASCII:

i = Asc("a") // i == 97 (correct) 

Qué pasa si tengo un caracter Unicode sin embargo?

i = Asc("•") // i == 149 (incorrect... should return 8226) 

Obviamente, el segundo ejemplo no funciona, ya que ese carácter no está en el conjunto de Ascii. ¿Existe una función equivalente que pueda usar que devuelva 8226 en lugar del resultado incorrecto 149?

Estoy haciendo esto en Outlook 2003, si eso hace alguna diferencia.

Respuesta

16

¿Qué hay de AscW?

+0

Sí, esa es la función que estaba buscando, gracias! – Senseful

+0

+1 pero ha vinculado a los documentos de Vb.net. Aquí está VB6 (VBA sería incluso mejor) http://msdn.microsoft.com/en-us/library/aa262678(VS.60).aspx – MarkJ

+0

@MarkJ, gracias por el enlace VB6, respuesta corregida. –

2

La respuesta proporcionada por RC. me ayudó mucho pero tuve problemas con la función AscW() que algunas veces devolvía valores negativos.

En mi caso, el problema apareció cuando se trabaja con caracteres chinos.

He encontrado una solución alternativa en la web:

Function CharToUnicode(strChar As String) 

    Dim lngUnicode As Long 

    lngUnicode = AscW(strChar) 

    If lngUnicode < 0 Then 
     lngUnicode = 65536 + lngUnicode 
    End If 

    CharToUnicode = lngUnicode 

End Function