Como convertir Unicode a ascii

Iniciado por thecirujano, 8 Febrero 2011, 13:58 PM

0 Miembros y 1 Visitante están viendo este tema.

thecirujano

Como puedo convertir un string unicode a ascii?

Psyke1


thecirujano

s = StrConv(Buffer, vbUnicode)
creo que me explique mal lo tengo así y me devuelve caracteres ilegibles, luego le aplique un strptr(s) y ahora me devuelve un valor numérico.
Sabes algun tipo de transformacion que me pueda ser util, lo estoy utilizando para leer la respuesta de una impresora conectada mediante bluetooth

raul338

s = StrConv(Buffer, vbFromUnicode)

Sino una mas burda

Código (vb) [Seleccionar]

Dim chars() as Byte
Dim sUnicode as String
Dim sAscii as string
' Asignas sUnicode
chars = StrConv(sUnicode, vbUnicode)
sAscii = StrConv(chars, vbFromUnicode)


Puedes ir variando

LeandroA

hola quizas sea Unicode a UTF8 o al revez


Option Explicit

Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8                   As Long = 65001

Public Function UTF82Unicode(ByVal sUTF8 As String) As String
    Dim UTF8Size        As Long
    Dim BufferSize      As Long
    Dim BufferUNI       As String
    Dim LenUNI          As Long
    Dim bUTF8()         As Byte
   
    If LenB(sUTF8) = 0 Then Exit Function
   
    bUTF8 = StrConv(sUTF8, vbFromUnicode)
    UTF8Size = UBound(bUTF8) + 1
   
    BufferSize = UTF8Size * 2
    BufferUNI = String$(BufferSize, vbNullChar)
   
    LenUNI = MultiByteToWideChar(CP_UTF8, 0, bUTF8(0), UTF8Size, StrPtr(BufferUNI), BufferSize)
   
    If LenUNI Then UTF82Unicode = Left$(BufferUNI, LenUNI)

End Function


Public Function Unicode2UTF8(ByVal strUnicode As String) As String
    Dim LenUNI          As Long
    Dim BufferSize      As Long
    Dim LenUTF8         As Long
    Dim bUTF8()         As Byte
   
    LenUNI = Len(strUnicode)
   
    If LenUNI = 0 Then Exit Function
   
    BufferSize = LenUNI * 3 + 1
    ReDim bUTF8(BufferSize - 1)
   
    LenUTF8 = WideCharToMultiByte(CP_UTF8, 0, StrPtr(strUnicode), LenUNI, bUTF8(0), BufferSize, vbNullString, 0)
   
    If LenUTF8 Then
        ReDim Preserve bUTF8(LenUTF8 - 1)
        Unicode2UTF8 = StrConv(bUTF8, vbUnicode)
    End If

End Function