VB&中文字符串

时间:2015-02-02 13:05:42

标签: unicode vb6 utf-16

我正在尝试使用VB6从网站上捕获中文文本

用于执行此操作的简单代码如下所示,适用于英文网站

    Private Function RequestText(sURL, Optional sMethod = "POST")
    'You may have caching issues using GET
    Dim XMLHTTP
    Set XMLHTTP = CreateObject("microsoft.XMLHTTP")
    sMethod = UCase(sMethod)
    XMLHTTP.Open sMethod, sURL, False
    XMLHTTP.send (Null) '"x=x"

    RequestText = XMLHTTP.responseText
    Set XMLHTTP = Nothing
End Function

Private Sub cmdText_Click()
    Dim html as string
    html = RequestText("http://url")
    Clipboard.Clear
    Clipboard.SetText html
    MsgBox "Done"
End Sub

当尝试将文本粘贴到word,notepad或db时,中文字符显示为???? 对此有何解决方案?

1 个答案:

答案 0 :(得分:1)

当调用API调用时,VB6是ANSI,因为WIN95不支持unicode。在COM和内部它是Unicode。因此,任何API调用,如剪贴板所需,您的TEXT将转换为ANSI。因此不要使用TEXT。 XMLHTTP有多种格式可供选择。

Internet Explorer可以访问剪贴板。用它来做。

此示例代码读取剪贴板。注意,您必须导航到任何本地文件以避免安全提示。

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
Sub Clip
    Set ie = CreateObject("InternetExplorer.Application") 
    ie.Visible = 0
    ie.Navigate2 FilterPath & "Filter.html"
    Do 
        wscript.sleep 100
    Loop until ie.document.readystate = "complete"  
    txt=ie.document.parentwindow.clipboardData.GetData("TEXT")
    ie.quit
    If IsNull(txt) = true then 
        outp.writeline "No text on clipboard"
    else
        outp.writeline txt
    End If
End Sub