我有这些用于缓存的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”编码的,这会导致char问题。当我将编码转换为“ANSI”时,一切都变得像预期的那样正常。
如何以编程方式将“oXMLHTTP.responseText”转换为“ANSI”?
答案 0 :(得分:0)
最佳做法是始终保存二进制而不是文本。您可以使用oXMLHTTP.responseBody
来访问响应二进制文件
但是,如果您确定响应文本与您的语言环境兼容,则可以安全地将响应文本保存在ANSI中,没有任何问题。
为此,您需要将False
传递给CreateTextFile方法的第三个参数。
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