Il salvataggio di un file in un tipo CSV in Excel rimuove sempre la distinta componenti


15

Ho cercato di trovare una soluzione / spiegazione ragionevole (senza esito positivo) per scoprire perché Excel utilizza per impostazione predefinita la rimozione della distinta componenti quando si salva un file nel tipo CSV.

Per favore, perdonami se trovi questo un duplicato di questa domanda. Questo gestisce la lettura di file CSV con codifica non ASCII, ma non copre il salvataggio del file (che è dove si trova il problema più grande).

Ecco la mia situazione attuale (che ho intenzione di raccogliere è comune tra i software localizzati che si occupano di caratteri Unicode e un formato CSV):

  • Esportiamo i dati in un formato CSV utilizzando UTF-16LE, assicurandoci che la DBA sia impostata (0xFFFE). Convalidiamo dopo che il file è stato generato con un editor esadecimale per assicurarci che sia stato impostato correttamente.

  • Apri il file in Excel (per questo esempio stiamo esportando caratteri giapponesi) e testimonia che Excel gestisce il caricamento del file con la codifica corretta.

  • I tentativi di salvare questo file ti chiederanno un messaggio di avviso che indica che il file potrebbe contenere funzionalità che potrebbero non essere compatibili con la codifica Unicode, ma ti chiederà se desideri comunque salvare.

  • Se si seleziona la finestra di dialogo Salva con nome, verrà immediatamente richiesto di salvare il file come "Testo Unicode" anziché CSV. Se selezioni l'estensione "CSV" e salvi il file rimuove la DBA (ovviamente insieme a tutti i caratteri giapponesi).

Perché dovrebbe succedere? Esiste una soluzione a questo problema o si tratta di un "bug" / limitazione noto di Excel?

Inoltre (come problema secondario) sembra che Excel, durante il caricamento di file CSV codificati UTF-16LE, utilizzi solo i delimitatori TAB. Ancora una volta, si tratta di un altro "bug" / limitazione noto di Excel?

Risposte:


6

Non ci sono risposte educate alle domande del modulo "Perché Excel fa X?".

Perché non adotti semplicemente "Salva come testo Unicode" come formato di trasferimento standard? Excel Salva come assicura che ci sia una DBA, usa TAB come delimitatore, cita i campi proprio come CSV ...

A proposito, non "selezionare l'estensione CSV". Hai DUE scelte: formato ed estensione. Prova a salvare come testo unicode nella casella "Tipo file" e modifica manualmente l'estensione nella casella "Nome file" in CSV. Quindi uscire da Excel e fare doppio clic sul nome del file in Esplora risorse. Si apre bene. Provalo.

Aggiornamento per discutere i commenti di OP :

  • "Salva come testo Unicode" (in Excel 2007) salverà sempre il tuo file come estensione di testo (non posso parlare per versioni precedenti o più recenti). Questa è l'idea di "Salva come tipo" ...

=> Per favore leggi attentamente ciò che ho scritto sopra e provalo tu stesso. Salverà sempre il tuo file con un'estensione TXT a meno che tu non lo sovrascriva : elimina txtnella casella "Nome file" e digita csv.

  • Per chiarire che "Salva Excel in modo che ci sia una DBA", non è corretto.

=> "Salva come testo Unicode " assicura che ci sia una DBA UTF-16LE nella parte anteriore del file. Provalo e vedi.

  • Questo è il motivo per cui ho posto una domanda in primo luogo! Se apro un file in formato CSV che contiene una DBA per indicare che il mio file La codifica è UFT-16LE e modifico questo file tramite Excel, mi aspetto che quando salvo questo file la codifica rimanga intatta ...

=> e le tue aspettative non sono soddisfatte, perché Excel non conserva alcuna informazione sui file CSV di input. Non c'è modo di costringerlo a fare quello che vuoi fare. Quindi ti arrendi o provi qualcos'altro, come quello che sto suggerendo.

  • Ciò che sarebbe davvero bello è qualcuno che ha già sperimentato questi problemi in precedenza, fornisci la tua visione per favore.

=> Ho riscontrato questi problemi, con dati cinesi ed Excel 1997, anni fa. Prima di rispondere alla tua domanda, ho verificato con Excel 2003 ed Excel 2007 che Excel si sta ancora comportando male. Ho verificato che la soluzione alternativa "salva come tipo = testo Unicode, estensione = CSV" funziona davvero. Ho fornito le mie intuizioni.


1
"Salva come testo Unicode" (in Excel 2007) salverà sempre il tuo file come estensione di testo (non posso parlare per versioni precedenti o più recenti). Questa è l'idea di "Salva come tipo" ... Per chiarire che "Salva Excel in modo che ci sia una DBA", non è corretto. Questo è il motivo per cui ho posto una domanda in primo luogo! Se apro un file in formato CSV che contiene una DBA per indicare che il mio file La codifica è UFT-16LE e modifico questo file tramite Excel, mi aspetto che quando si salva questo file la codifica rimanga intatta ... Ciò che sarebbe davvero bello è qualcuno che ha già riscontrato questi problemi prima, fornisci la tua visione per favore.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.