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
我有这些 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