3

ReadLine()ファイルシステムオブジェクトのASPクラシック機能を使用しています。
誰かがテキストエディットのMacでインポートファイルを作成するまで、すべてがうまく機能してきました。

行末は同じではなくReadLine()、一度に1行だけでなく、ファイル全体を読み込みます。

これを処理する標準的な方法はありますか?ある種のページディレクティブ、またはファイルシステムオブジェクトの設定?

ファイル全体を読み込んで分割しvbLF、項目ごとvbCRに「」に置き換えて、行を1つずつ処理できると思いますが、少し厄介なようです。

私はこの問題の解決策をあちこち探してきましたが、解決策はすべて「Mac[sic]の行末でファイルを保存しないでください」という行に沿っています。

誰かがこの問題に対処するためのより良い方法を持っていますか?

4

1 に答える 1

4

の動作を変更する方法はありませんReadLine。CRLFをラインターミネータとしてのみ認識します。したがって、唯一の単純な解決策は、すでに説明したものです。

編集

実際には、ASPサーバー上で箱から出してすぐに利用できるはずの別のライブラリがあり、何らかの助けを提供する可能性があります。それがADODBライブラリです。

ADODB.Streamオブジェクトには、通常LineSeparator使用するデフォルトのCRLFをオーバーライドするために10または13を割り当てることができるプロパティがあります。での使用方法が説明されていないため、ドキュメントにはパッチがありますReadTextReadTextパラメータとして-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を割り当てる必要があります。ドキュメントが実際にUTF-16を意味するという意味で、「Unicode」という言葉を使用します。Scriptingここでの利点の1つは、ライブラリとは異なり、ADODBStreamがUTF-8を処理できることです。

ところで、MACは行末にCRを使用していると思いましたか?LFを使用するUnixファイル形式ですね。

于 2009-12-08T09:14:27.523 に答える