Compatibilità Windows con Unix / Linux newline "\ n"

1

Un seguito di Differenza tra '\ n' e '\ r \ n '.

Sono passati alcuni decenni da quando è stato introdotto lo scisma. Oggigiorno, quando i documenti vengono scambiati su Internet, in genere senza alcuna conoscenza preliminare delle preferenze del cliente per le terminazioni di riga, i clienti devono gestire sia \n , \r\n .

A me sembra che sia sicuro usare solo \n . Il software prodotto da Microsoft può elaborare entrambi. Anche i principali editor di testo in chiaro possono farlo. Browser, IDE, file manager, suite per ufficio, tutti questi possono farlo.

C'è qualche ragione per scrivere software per usare CRLF o è praticamente ok per unificare in "\ n"? Esistono problemi noti con "\ n" in tutti i principali software Windows moderni?

EDIT: il problema non riguarda il software stesso. Infatti il software può utilizzare una sorta di costante di NL che si risolve in fase di runtime. Tuttavia, i file generati stanno per essere trasferiti e difficilmente convertiti in ogni occasione.

Immagina un'azienda in cui la macchina di origine di un contenuto / documento può essere qualsiasi piattaforma e anche il consumo. E il modo di trasferire i documenti può essere qualsiasi (posta, unità condivisa, download, ...) In tale scenario, non c'è modo di impedire che il contenuto utilizzi \n visualizzato su Windows e viceversa. Da qui la domanda.

    
posta Ondra Žižka 30.09.2017 - 08:05
fonte

4 risposte

1

Per quanto riguarda Windows e C #, puoi sempre usare Environment.Newline

per determinare il carattere della nuova riga di default del sistema su cui è stato eseguito il programma.

inoltre, puoi usare text.Replace ("\ n", "\ r \ n") per passare a Windows return.

Ci sono ancora problemi di compatibilità durante la gestione dei file e in particolare quelli relativi all'ufficio, alcune arcane API COM sono anche sensibili alle nuove linee.

    
risposta data 08.10.2017 - 19:24
fonte
1

Questa domanda riguarda davvero la "base di clienti" di un'applicazione software.

Per rispondere alla tua domanda, devi sapere se i tuoi clienti potrebbero essere disturbati se la tua applicazione genera file di testo di output che sono solo \n e non forniscono un'opzione per l'output di \r\n . Il modo migliore per scoprirlo è chiedere ai tuoi clienti reali.

Dal punto di vista di un programmatore, aggiungere un'opzione per scegliere la nuova riga nei file di testo di output è un compito relativamente piccolo. In alternativa, è possibile scegliere automaticamente \n e \r\n in base alla piattaforma. Inoltre, la maggior parte delle funzioni della libreria di gestione della riga di testo gestisce già \n e \r\n , senza sforzo del programmatore.

Se si sta scrivendo una libreria, è possibile restituire i dati nelle stringhe, eliminando completamente la questione delle nuove righe o utilizzare la funzione di gestione dei file di testo fornita con il linguaggio di programmazione.

Tuttavia, se si stanno distribuendo archivi (ad esempio file ZIP) contenenti file basati su testo, sarebbe davvero ridondante fornire due serie di archivi: un file ZIP in cui tutti i file di testo hanno \r\n newlines, un altro in cui tutti i newline sono \n . In genere, questo problema viene risolto combinandolo con un altro problema con effetti di rete, il formato di compressione file preferito per ogni piattaforma:

  • Fornisci uno ZIP con nuove righe \r\n
  • Fornisci un TGZ con le nuove righe \n
risposta data 09.10.2017 - 01:08
fonte
1

Blocco note di Windows ( notepad.exe ) non interpreta un% co_de standalone come una nuova riga. Non è necessariamente "moderno" ma praticamente "mainstream".

Se stai scrivendo file di testo, l'utente di ogni giorno dovrebbe essere in grado di modificare, non concentrarsi solo su \n e invece scrivere il tuo programma in modo da accettare tutti e tre gli stili (dato che alcuni programmi più vecchi potrebbero anche usarli % solo\n).

    
risposta data 30.09.2017 - 08:23
fonte
0

Preambolo: Il testo è binario con convenzioni .

"To me it seems that it's safe to use \n only."

"Imagine a company where the originating machine of a content/document can be any platform, and the consuming too. And the way of transferring the documents can be any (mail, shared drive, download,...)"

Ci sono 2 punti che dobbiamo affrontare qui. Se stai servendo il file e stai consumando il file.

Elaborazione del file di testo:

Attenersi a un formato specifico. Definisci la tua codifica, la tua politica di nuova riga e mantienila coerente lungo tutti i file che generi. Comprendi le specifiche di ciascuna codifica che hai deciso di utilizzare (ad esempio, UTF-8 di solito ti richiede di inserire un BOM a 3 byte all'inizio di ogni file - alcuni sistemi non sono pronti per funzionare con questo).

Leggi il Test della Turchia e perché è importante .

Inoltre, poiché sei uno sviluppatore di software e non un utente comune, ricorda: Il testo è un mucchio di byte con alcune convenzioni asperse specifiche sopra, quindi consideralo come BINARIO e trasferiscilo di conseguenza su FTP, SFTP , Risposte HTTP, scrittura di file, ecc ...

Consumo di un file di testo:

A meno che tu non abbia le specifiche appropriate del formato del file, avrai un brutto momento.

Ma non c'è niente che ti impedisca di fare una sorta di euristica sulle newline, basandosi sul fatto che i formati più comuni sono \ r \ n, \ n e \ r, basati su Newline Representations su Wikipedia.

Quello che faccio di solito quando devo consumare un file di testo è la ricerca di \ r \ n, poiché è la rappresentazione più comune (numero maggiore di piattaforme). Quindi salta a usare solo \ n perché è il secondo più importante. Infine, salta a utilizzare solo \ r.

Ricorda che il testo è dati binari con convenzioni . Scoprire le convenzioni è ciò che lo rende difficile.

Rant finale:

Il testo è difficile. Gestire il testo nel modo corretto è più difficile.

Non esiste un file di testo . Anche Plain Text è una bugia. Un utente finale ha il lusso di lamentarsi dei file TXT, ma noi come sviluppatori no.

Il puro numero di domande su come rilevare correttamente la codifica su un file di testo su StackOverflow è un suggerimento.

La semplice gestione di codifiche di caratteri comuni è difficile a causa dell'enorme quantità di diverse codifiche disponibili. Solo su quella pagina di Wikipedia ci sono oltre 60 diversi a cui pensare.

Gestire i newline è solo un altro aspetto di come gestire correttamente il testo. Che è speciale se devi interfacciarti con dispositivi più vecchi (come un Atari-8 che usa 0x9B come marker di nuova riga).

Il testo è dati binari con le convenzioni in alto.

Note importanti:

risposta data 09.10.2017 - 20:26
fonte

Leggi altre domande sui tag