ASP 基于 Unicode 的文本文件的 ANSI 转换

ASP ANSI Conversion for Unicode Based Text File

我有这些 ASP 缓存脚本

fn = "caches/"&md5(url)&".html"

// Grab HTML file from site
set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
oXMLHTTP.Open "GET", url, false
oXMLHTTP.Send

// Save it
set fs = Server.CreateObject("Scripting.FileSystemObject")
set file = fs.CreateTextfile(fn,false,true)
file.Write oXMLHTTP.responseText
file.close

// Open it and print to screen
set file = fs.OpenTextFile(fn,1)
response.write file.ReadAll
file.Close
response.end

保存的文件是 "Unicode BOM" 编码的,这会导致字符问题。当我将编码转换为 "ANSI" 时,一切都像预期的那样正常。

如何以编程方式将 "oXMLHTTP.responseText" 转换为 "ANSI"?

最佳做法是始终保存二进制而不是文本。您可以改用 oXMLHTTP.responseBody 访问响应二进制文件。
但是,如果您确定响应文本与您的语言环境兼容,则可以安全地将响应文本保存为 ANSI 格式。
为此,您需要为 CreateTextFile 方法的第三个参数传递 False

set file = fs.CreateTextfile(fn, false, false)

但我强烈建议您像下面这样保存二进制文件:

Dim Stm
Set Stm = Server.CreateObject("Adodb.Stream")
    Stm.Type = 1 'adTypeBinary, to set binary stream
    Stm.Open
    Stm.Write oXMLHTTP.responseBody ' bytes of http response
    Stm.SaveToFile fn 'response saved as is
    Stm.Close
Set Stm = Nothing