如何转换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)
您的脚本正在正确获取字节流并按原样保存它。没问题 您的问题是,本地文本编辑器不知道它应该以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。我还知道,在我上面提到的站点中,它是在服务器端执行的…只是在寻找功能谢谢。。非常感谢。谢谢你…救了我一天:-)