@洪流Blog
space ホーム space|space ユーザログイン
space
 現在位置:技術 >> VBSツール >>用ADODB.Stream代替FSO读写文本类文件--出现乱码的解决方法

用ADODB.Stream代替FSO读写文本类文件--出现乱码的解决方法
投稿者:于洪流

我先贴出这段经典的代码——'文件内容读取.
Function LoadFile(ByVal File)
Dim objStream
On Error Resume Next
Set objStream = Server.CreateObject("ADODB.Stream")
If Err.Number=-2147221005 Then
Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"
Err.Clear
Response.End
End If
With objStream
.Type = 2
.Mode = 3
.Open
.LoadFromFile Server.MapPath(File)
If Err.Number<>0 Then
Response.Write "<div align='center'>文件<font color='#ff0000'>"&File&"</font>无法被打开,请检查是否存在!</font& gt;</div>"
Err.Clear
Response.End
End If
.Charset = "GB2312"
.Position = 2
LoadFile = .ReadText
.Close
End With
Set objStream = Nothing
End Function
 
'存储内容到文件
Sub SaveToFile(ByVal strBody,ByVal File)
Dim objStream
On Error Resume Next
Set objStream = Server.CreateObject("ADODB.Stream")
If Err.Number=-2147221005 Then
Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"
Err.Clear
Response.End
End If
With objStream
.Type = 2
.Open
.Charset = "GB2312"
.Position = objStream.Size
.WriteText = strBody
.SaveToFile Server.MapPath(File),2
.Close
End With
Set objStream = Nothing
End Sub
 
          这段代码并没有错,但是仍然有人在使用该段代码后,读取存储文本类文件后出现错误。常见的有读取文本后,在文本头处出现乱码,如问号"?"、很奇怪的文 字等,这是怎么造成的的呢。下面我们就将讨论这个问题。我们知道,在计算机中常见的文本编码有ANSI(ASCII)、Unicode、Unicode       Big       Endian、UTF-8等,这些编码分别在不同的领域内使用,详情参考互联网。而这次导致这个错误的元凶,则正是这个文本文件保存时的编码问题。解决办 法:在本文开头处所述的代码中,我们将char       set 为GB2312,那么对应着你的文本文件的编码应该设置为Unicode ,类似的char设为en时,文本应该设置为ANSI。 但是对于UTF-8则须注意,文本不能保存为UTF-8,而必须保存为Unicode或Unicode       Big       Endian 。究其原因,我想是因为所调用的函数的处理问题,不能很好的处理UTF-8编码的文本。
loginユーザメニュー
  ユーザログイン  

     トップ↑

space
@洪流Blog 最新コンテンツ サイト情報 権利情報 提携リンク
Copyright ©2002-2018 洪流  Mobileモード    中国語メニュー(追加中)
OneIDSystem Ver:1.5.0.1.2 Powered by:OneID.id