WinSCP arruina los saltos de línea en los archivos, ¿cómo evitarlos?


5

Me estoy cansando de cómo WinSCP arruina la línea.

this is line 1
this is line 2

Se convierte en

this is line 1

this is line 2

Simplemente podría usar FileZilla para FTP y Putty para SCP (creo que Putty puede manejar eso) pero, eso es bastante molesto. ¿Cómo puedo mitigar este problema?


1
Puede acceder a la configuración y hacer que use binario en lugar de automático. Además, si está utilizando un editor externo (como yo), asegúrese de que no se manche con él tampoco. El mío nunca me ha dado un problema (uso el bloc de notas de los programadores, también conocido como pnotepad)

Entonces, ¿dónde está Lars? Golpear y dividir.
ejbytes

Respuestas:


9

Yo diría que el comentario dejado por acidzombie24 Es el mejor consejo. Personalmente no he encontrado un mejor programa de FTP que WinSCP. Le recomiendo que cambie la configuración para transferir usando Binary, y use un editor como NP ++ en lugar del editor interno.

Aquí hay algunas capturas de pantalla:

Binary Transfer

Editor


Agregando a la respuesta de Merlin, lo arreglé cambiando las preferencias de Transferencia de Binario a Automático.
desbest

Además, debe asegurarse de que el modo "texto" no esté forzado en su editor externo. Vaya a Editores, haga clic en su editor, haga clic en editar ... y luego asegúrese de que la opción "Forzar el modo de transferencia de texto" no esté marcada
Vigrond

3

Versión redactada de las preguntas frecuentes de WinSCP ¿Por qué los saltos de línea del archivo de texto son incorrectos después de transferir o editar el archivo?

Ver particularmente su Problemas conocidos sección.


Después de transferir o editar un archivo, puede ocurrir que los saltos de línea sean incorrectos, lo que puede manifestarse como:

  • Los saltos de línea se pierden. Parece que si todo el contenido del archivo está en una sola línea.
  • Los saltos de línea están duplicados. Parece que hay una línea vacía adicional entre cada línea.
  • Hay un símbolo / personaje extraño al final de cada línea.

Formatos de archivo de texto

Diferentes plataformas (sistemas operativos) utilizan un formato diferente de archivos de texto. Los formatos más comunes son Unix y Windows. Una diferencia principal es que se utilizan caracteres o secuencias de caracteres diferentes para indicar el final de una línea. En Unix, es el personaje LF ( \n, 0A o 10 en decimal). En Windows, es una secuencia de dos caracteres, CR y LF ( \r + \n, 0D + 0A o 13 + 10 en decimal).

Si bien muchas aplicaciones y sistemas hoy en día pueden funcionar con ambos formatos, algunos requieren un formato específico. Al presentar un archivo en otro formato, no lo muestran correctamente, como se describe anteriormente.

Modo de transferencia de texto / ASCII

Por esta razón, los clientes y servidores de transferencia de archivos admiten texto / ASCII modo de transferencia . Al transferir un archivo en este modo, el archivo se convierte (idealmente) de un formato nativo a un sistema de origen, a un formato nativo de un sistema de destino. Por ejemplo, al cargar un archivo de texto utilizando el modo de texto de Windows al sistema Unix, los finales de línea de archivo se convierten de CR + LF a LF.

WinSCP utiliza por defecto el modo de transferencia binario para todos los archivos. Aprende a configurarlo para utilizar el modo de transferencia de texto / ASCII . También es posible que necesite configurar Formato de archivo de texto del lado del servidor correcto .

Por el contrario, cuando desea forzar a WinSCP a usar un modo binario, incluso cuando edita archivos en un editor de texto, tiene que usar un editor de texto externo (el editor interno de WinSCP no admite el formato de archivo Unix) y configurar WinSCP No forzar el modo de texto para archivos editados. . También asegúrese de que su editor de texto externo guarde el archivo en el formato que necesita (la mayoría de los editores de texto hoy en día admiten diferentes formatos de archivo de texto, no solo un formato nativo de la plataforma en la que se ejecuta el editor).

Problemas conocidos con el modo de transferencia

  • Servidor FTP de Pure-FTPd: al descargar un archivo con finales de línea de Windows (CR + LF) en modo texto / ASCII, el servidor reemplaza LF con CR + LF, lo que da como resultado un CR + CR + LF incorrecto. Al abrir dicho archivo en un editor interno de WinSCP, el editor interpreta la secuencia como dos finales de línea (CR y CR + LF) que dan como resultado una línea en blanco después de cada línea de contenido. Cuando se guarda el archivo, el editor interno guarda dos finales de línea de Windows CR + LF y CR + LF. Al subir, se convierten en dos LF. Una solución es usar un editor externo y asegurarse de que WinSCP no fuerza el modo de texto para archivos editados .

Depuración de conversión de archivos de texto

Si habilitar (o deshabilitar) el modo de transferencia de texto / ASCII no ayuda con el problema y su archivo transferido / editado aún es percibido incorrectamente por el sistema de destino, debe averiguar en qué paso se convirtió incorrectamente el archivo (o no lo ha hecho). se convirtió).

Para detectar los finales de línea utilizados por un archivo en Windows, use el siguiente comando en la consola de PowerShell para mostrar el volcado hexadecimal de los primeros 100 caracteres del archivo dado ( example.txt ):

Get-Content -Encoding Byte -TotalCount 100 example.txt |% {Write-Host ("{0:x2} " -f $_) -NoNewline}; Write-Host

Para un archivo con los siguientes contenidos en formato Windows.

One
Two

muestra:

4f 6e 65 0d 0a 54 77 6f 0d 0a

Nota las dos secuencias 0d 0a (CR + LF) que indica el formato de Windows.

Para detectar los finales de línea utilizados por un archivo en el sistema Unix / Linux, use el comando:

xxd example.txt | head

(Las alternativas son hexdump example.txt | head o od example.txt | head.)

Para el mismo archivo anterior, solo en formato Unix, muestra:

0000000: 4f6e 650a 5477 6f0a                      One.Two.

Nota el caracter 0a (LF) que indica el formato Unix.

Si no tiene acceso de shell al sistema remoto, descargue el archivo con codificación binaria y use el comando PowerShell en una copia local idéntica a la del binario.

Utilice estas técnicas para detectar qué formato tienen los archivos de origen y de destino. Al editar un archivo, detecte también el formato de una copia temporal local del archivo editado como lo guarda el editor. Ver preferencias para Una ubicación de las copias temporales. .

Solicitando Apoyo

Cuando lo anterior no le ayuda a entender el problema y decide buscar más ayuda, incluya todos sus hallazgos, incluidas las copias del archivo de origen y de destino. Al editar un archivo, incluya también una copia temporal local guardada por el editor. Lo ideal es comprimir (ZIP) los archivos para evitar que su navegador altere el formato del archivo, al adjuntar los archivos para admitir la solicitud.


(Soy el autor de WinSCP)


0

=== Mis únicas SOLUCIONES ===

Método 1:

- Abrir archivo (con, por ejemplo, Notepad ++), abrir "Encontrar y reemplazar" ventana [Ctrl + F] (marque "Extendido" en "Modo de búsqueda"), luego escriba \ r \ n en primera linea, y \norte en el segundo y haga clic "Reemplaza todo" y guarda.

Método 2:

en Preferencias & gt; Transer & gt; Predeterminado " escoger " Automático (Modo de transferencia) ";
-Entonces en " Texto "ventana, establezca dichas condiciones (pero no las he probado bien): enter image description here

por lo tanto, ahora su problema puede ser solucionado. muchas personas tienen este problema, porque WINSCP elimina las nuevas líneas de forma predeterminada (en algunos casos).


0

No más linebreaks dobles aquí. Mi solución fue desactivar el "Modo de transferencia de texto forzado para archivos en un editor externo" en las preferencias del editor.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.