gpt4 book ai didi

asp-classic - ASP Readline 非标准行尾

转载 作者:行者123 更新时间:2023-12-01 13:07:41 30 4
gpt4 key购买 nike

我正在使用文件系统对象的 ASP 经典 ReadLine() 函数。
在有人在 Mac 上使用 TextEdit 制作导入文件之前,一切都运行良好。

行尾不一样,ReadLine() 读取整个文件,而不是一次只读取 1 行。

是否有处理此问题的标准方法?某种页面指令,或文件系统对象上的设置?

我想我可以读入整个文件,并在 vbLF 上拆分,然后对于每个项目,将 vbCR 替换为“”,然后处理行,一个一次,但这似乎有点笨拙。

我已经到处搜索这个问题的解决方案,但解决方案都是“不要使用 Mac[sic] 行结尾保存文件。”

谁有更好的方法来处理这个问题?

最佳答案

没有办法改变 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

请注意,默认情况下 CharSet 是 unicode,因此如果文件不是 Unicode,您将需要分配文件使用的正确 CharSet。我使用“Unicode”这个词是因为文档确实意味着 UTF-16。这里的一个优势是 ADODB Stream 可以处理 UTF-8,这与 Scripting 库不同。

顺便说一句,我认为 MAC 使用 CR 作为行尾?它是使用 LF 的 Unix 文件格式吗?

关于asp-classic - ASP Readline 非标准行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863400/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com