Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: thecirujano en 8 Febrero 2011, 13:58 pm



Título: Como convertir Unicode a ascii
Publicado por: thecirujano en 8 Febrero 2011, 13:58 pm
Como puedo convertir un string unicode a ascii?


Título: Re: Como convertir Unicode a ascii
Publicado por: Psyke1 en 8 Febrero 2011, 14:09 pm
Busca:
StrConv()

DoEvents! :P


Título: Re: Como convertir Unicode a ascii
Publicado por: thecirujano en 8 Febrero 2011, 14:24 pm
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


Título: Re: Como convertir Unicode a ascii
Publicado por: raul338 en 8 Febrero 2011, 14:36 pm
s = StrConv(Buffer, vbFromUnicode)

Sino una mas burda

Código
  1. Dim chars() as Byte
  2. Dim sUnicode as String
  3. Dim sAscii as string
  4. ' Asignas sUnicode
  5. chars = StrConv(sUnicode, vbUnicode)
  6. sAscii = StrConv(chars, vbFromUnicode)
  7.  

Puedes ir variando


Título: Re: Como convertir Unicode a ascii
Publicado por: LeandroA en 8 Febrero 2011, 15:49 pm
hola quizas sea Unicode a UTF8 o al revez

Código:
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