【问题标题】:How to convert UNICODE Hebrew appears as Gibberish in VBScript?如何转换 UNICODE 希伯来语在 VBScript 中显示为乱码?
【发布时间】:2012-07-09 06:01:29
【问题描述】:
  1. 我正在使用 vbscript 和 WinHttp.WinHttpRequest.5.1 对象从希伯来语(WINDOWS-1255 / UTF-8 编码)网站收集信息。

例如:

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)
  1. 在记事本/notepad++ 中查看文件时,我将希伯来语视为 Gibrish / Gibberish。 例如 : äìëåú - äøá àáøäí éåñó - îåøùú

  2. 我需要一个 vbscript 函数来正确返回希伯来语,该函数应该类似于以下http://www.pixiesoft.com/flip/ 选择第二个单选按钮并按转换按钮,您将正确看到希伯来语。

【问题讨论】:

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

标签: unicode utf-8 vbscript hebrew windows-1255


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢..谢谢..谢谢...拯救了我的一天:-)
【解决方案2】:

感谢 Charming Bobince(发布了答案),我现在可以通过执行以下操作正确地看到 HEBREW(将 windows-1255 编码保存到 txt 文件(记事本)):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多