Cómo convertir UNICODE Hebrew aparece como Gibberish en VBScript?
utf-8 windows-1255 (2)
- Estoy recopilando información de un sitio web HEBREO (codificación WINDOWS-1255 / UTF-8) usando vbscript y el objeto WinHttp.WinHttpRequest.5.1.
Por ejemplo :
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
...
''writes the file as unicode (can''t use Ascii)
Set Fileout = FSO.CreateTextFile("c:/temp/myfile.xml", true, true)
....
Fileout.WriteLine(objWinHttp.responsetext)
Al ver el archivo en el bloc de notas / bloc de notas ++, veo el hebreo como Gibrish / Gibberish. Por ejemplo: äìëåú - äøá àáøäí éåñó - îåøùú
Necesito una función vbscript para devolver el hebreo correctamente, la función debe ser similar a la siguiente http://www.pixiesoft.com/flip/ elegir el segundo botón de radio y presionar el botón convertir, verá el hebreo correctamente.
Gracias a Charming Bobince (que publicó la respuesta), ahora puedo ver HEBREW correctamente (guardando una codificación windows-1255 en un archivo txt (notpad)) implementando lo siguiente:
Function ConvertFromUTF8(sIn)
Dim oIn: Set oIn = CreateObject("ADODB.Stream")
oIn.Open
oIn.CharSet = "X-ANSI"
oIn.WriteText sIn
oIn.Position = 0
oIn.CharSet = "WINDOWS-1255"
ConvertFromUTF8 = oIn.ReadText
oIn.Close
End Function
Su script está capturando correctamente la secuencia de bytes y guardándola como está. No hay problemas allí.
Su problema es que el editor de texto local no sabe que se supone que debe leer el archivo como cp1255, por lo que intenta el valor predeterminado en su máquina de cp1252. No puede guardar el archivo localmente como cp1252, para que el Bloc de notas lo lea correctamente, ya que cp1252 no incluye caracteres hebreos.
¿Qué va a leer finalmente el archivo o el flujo de bytes, que necesitará recoger el hebreo correctamente? Si no es compatible con cp1255, deberá encontrar una codificación compatible con esa herramienta y convertir la cadena cp1255 en esa codificación. Sugiera que pruebe UTF-8 o UTF-16LE (la codificación de Windows llama erróneamente ''Unicode'').
La conversión de texto entre codificaciones en VBScript / JScript se puede realizar como un efecto secundario de una transmisión ADODB. Vea el ejemplo en esta respuesta .