没有办法改变 的行为ReadLine
,它只会将 CRLF 识别为行终止符。因此,唯一简单的解决方案是您已经描述的解决方案。
编辑
实际上,在 ASP 服务器上应该有另一个开箱即用的库,它可能会提供一些帮助。那就是 ADODB 库。
该ADODB.Stream
对象有一个LineSeparator
属性,可以分配 10 或 13 以覆盖它通常使用的默认 CRLF。该文档不完整,因为它没有描述如何将其与ReadText
. 您可以ReadText
通过传递 -2 作为其参数来获取从流中返回下一行的方法。
看看这个例子: -
Dim sLine
Dim oStreamIn : Set oStreamIn = CreateObject("ADODB.Stream")
oStreamIn.Type = 2 '' # Text
oStreamIn.Open
oStreamIn.CharSet = "Windows-1252"
oStreamIn.LoadFromFile "C:\temp\test.txt"
oStreamIn.LineSeparator = 10 '' # Linefeed
Do Until oStreamIn.EOS
sLine = oStreamIn.ReadText(-2)
'' # Do stuff with sLine
Loop
oStreamIn.Close
请注意,默认情况下 CharSet 是 unicode,因此如果文件不是 Unicode,您将需要分配文件使用的正确 CharSet。我使用“Unicode”这个词的意思是文档实际上意味着 UTF-16。这里的一个优点是 ADODB Stream 可以处理 UTF-8 与Scripting
库不同。
顺便说一句,我认为 MAC 使用 CR 作为行尾?它使用 LF 的 Unix 文件格式不是吗?