Как конвертировать UNICODE иврит появляется как Vibcript в VBScript?
- Я собираю информацию с веб-сайта HEBREW (кодировка WINDOWS-1255 / UTF-8), используя vbscript и объект WinHttp.WinHttpRequest.5.1.
Например:
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)
При просмотре файла в notepad / notepad++, я вижу иврит как Gibrish / Gibberish. Например: - - ë - ø - - - - - - - - - - - - - - -
Мне нужна функция vbscript для правильного возвращения иврита, функция должна быть похожа на следующую http://www.pixiesoft.com/flip/ выбрав 2-й переключатель и нажмите кнопку конвертирования, вы увидите правильно иврит.
2 ответа
Ваш скрипт правильно выбирает поток байтов и сохраняет его как есть. Там нет проблем.
Ваша проблема в том, что локальный текстовый редактор не знает, что он должен читать файл как cp1255, поэтому он пытается использовать по умолчанию на вашем компьютере cp1252. Вы не можете сохранить файл локально как cp1252, так что Notepad будет правильно его читать, потому что cp1252 не содержит символов иврита.
Что в конечном итоге будет читать файл или поток байтов, что нужно будет правильно подобрать иврит? Если он не поддерживает cp1255, вам необходимо найти кодировку, поддерживаемую этим инструментом, и преобразовать строку cp1255 в эту кодировку. Предположим, вы можете попробовать UTF-8 или UTF-16LE (кодировка Windows вводит в заблуждение "Юникод".)
Преобразование текста между кодировками в VBScript/JScript может быть выполнено как побочный эффект потока ADODB. Смотрите пример в этом ответе.
Благодаря Charming Bobince (который опубликовал ответ) я теперь могу правильно видеть HEBREW (сохраняя кодировку windows-1255 в текстовый файл (notpad)), реализовав следующее:
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