没有办法改变ReadLine
的行为,它只会将CRLF识别为行终止符。因此,唯一简单的解决方案就是您已经描述的解决方案。
编辑
其实还有另外一个库,它应该是现成可用的,可能提供一些帮助的ASP服务器上。这是ADODB库。
ADODB.Stream
对象具有LineSeparator
属性,该属性可以分配10或13以覆盖它通常使用的默认CRLF。该文档是不完整的,因为它没有描述如何将它与ReadText
一起使用。你可以通过传递-2作为参数来获得ReadText
方法从流中返回下一行。
这个例子看看: -
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
注意,默认字符集是unicode的,所以你需要指定正确的字符集,如果它不是Unicode正在使用的文件。我在文档中使用“Unicode”这个词,意思是它实际上意味着UTF-16。这里的一个优点是ADODB Stream可以处理UTF-8,与Scripting
库不同。
顺便说一句,我认为MAC使用CR作为行尾?它使用LF的Unix文件格式不是吗?
你可能在Unix上关于Mac和LF上的CR的问题上很失败。说实话,我是通过2个远程桌面会话来调试这个东西,剪贴板没有被复制。我只知道有差异,我很早就在调试会议上询问了什么样的机器创建了这个文件。 安东尼,我只是想再次表示感谢你的时间,并认为你把你的答案。对此,我真的非常感激。 – 2009-12-10 02:09:23
Mac OS X是一个Unix。这是经典的Mac OS使用CR(尽管一些应用程序仍然如此,我认为)。 – 2013-06-19 07:38:17