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?

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top