如何转换UNICODE希伯来语在VBScript中显示为胡言乱语? 我正在使用vbscript和WinHttp.WinHttpRequest.5.1对象从希伯来语(WINDOWS-1255/UTF-8编码)网站收集信息

如何转换UNICODE希伯来语在VBScript中显示为胡言乱语? 我正在使用vbscript和WinHttp.WinHttpRequest.5.1对象从希伯来语(WINDOWS-1255/UTF-8编码)网站收集信息,unicode,utf-8,vbscript,hebrew,windows-1255,Unicode,Utf 8,Vbscript,Hebrew,Windows 1255,例如: 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++

例如:

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函数来正确返回希伯来语,该函数应该类似于下面选择第二个单选按钮并按下转换按钮,您将正确看到希伯来语


  • 您的脚本正在正确获取字节流并按原样保存它。没问题

    您的问题是,本地文本编辑器不知道它应该以cp1255的形式读取文件,因此它会在您的机器上尝试默认的cp1252。您不能将文件保存为本地cp1252,这样记事本就可以正确读取它,因为cp1252不包含任何希伯来语字符

    最终需要读取文件或字节流的是什么,这将需要正确地提取希伯来语?如果它不支持cp1255,则需要找到该工具支持的编码,并将cp1255字符串转换为该编码。建议您尝试UTF-8或UTF-16LE(编码窗口错误地调用“Unicode”)


    在VBScript/JScript中的编码之间转换文本可以作为ADODB流的副作用来完成。请参见中的示例。

    多亏了迷人的Bobince(发布了答案),我现在能够正确地看到希伯来语(将windows-1255编码保存到txt文件(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
    

    文本是UTF-8还是Windows-1255?它们的编码不同。@Jon Skeet:显然是Windows-1255,但这只是猜测。OP可能应该识别web页面的URL和/或从服务器发布相关HTTP和/或HTML头的副本。结果文件中的实际十六进制字节也比复制/粘贴未知字符集更有用。感谢您的快速反馈。所以我不确定,这里最好的做法是什么?关于编码……请参考:Windows-1255。我还知道,在我上面提到的站点中,它是在服务器端执行的…只是在寻找功能谢谢。。非常感谢。谢谢你…救了我一天:-)