Невозможно изменить поведение 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, поэтому вам нужно будет назначить правильный CharSet, используемый файлом, если это не Unicode. Я использую слово «Юникод» в том смысле, в каком документация означает, что на самом деле означает UTF-16. Одним из преимуществ здесь является то, что ADODB Stream может обрабатывать UTF-8, в отличие от библиотеки Scripting
.
Кстати, я думал, что MAC используют CR для окончания строки? Это формат файла Unix, в котором используются LF, не так ли?
person
AnthonyWJones
schedule
08.12.2009