ASP Readline finales de línea no estándar
-
16-09-2019 - |
Pregunta
Estoy usando la función ReadLine()
ASP clásico del objeto del sistema de archivos.
Todo ha estado trabajando muy bien hasta que alguien hizo su archivo de importación en un Mac en la edición de textos.
Los finales de línea no son los mismos, y ReadLine()
lee en el archivo completo, no sólo 1 línea a la vez.
¿Hay una manera estándar de manejar esto? Algún tipo de directiva de página, o la creación de objetos en el sistema de archivos?
supongo que podía leer en el archivo completo, y se dividió en vbLF
, a continuación, para cada artículo, reemplazar vbCR
con "", y luego procesar las líneas, una a la vez, pero que parece un poco kludgy.
He buscado por todas partes para una solución a este problema, pero las soluciones son a lo largo de las líneas de "no guarda el archivo con Mac [sic] finales de línea."
Alguien tiene una mejor manera de hacer frente a este problema?
Solución
No hay manera de cambiar el comportamiento de ReadLine
, sólo se reconocerá CRLF como un terminador de línea. Por lo tanto, la única solución es simplemente el que ya hemos descrito.
Editar
En realidad no hay otra biblioteca que debe estar disponible fuera de la caja en un servidor ASP que podrían ofrecer alguna ayuda. Esa es la biblioteca de ADODB.
El objeto ADODB.Stream
tiene una propiedad LineSeparator
que se puede asignar 10 o 13 para anular el CRLF predeterminado que usaría normalmente. La documentación es incompleta, ya que no describe cómo se puede utilizar con ReadText
. Usted puede obtener el método ReadText
para devolver la siguiente línea de la corriente que pasa por -2 como su parámetro.
Tome un vistazo a este ejemplo: -
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
Tenga en cuenta que por defecto el conjunto de caracteres Unicode es lo que tendrá que asignar el conjunto de caracteres correcto siendo utilizado por el archivo si no es Unicode. Uso la palabra "Unicode" en el sentido de que la documentación hace que en realidad significa UTF-16. Una ventaja aquí es que Stream ADODB puede manejar UTF-8 a diferencia de la biblioteca Scripting
.
Por cierto, pensé MAC utilizado un CR para finales de línea? Su formato de archivo de Unix que utiliza LF no?