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

时间:2016-01-17 01:04:59

标签: unicode asp-classic ansi

我有这些用于缓存的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”?

1 个答案:

答案 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