Perché SQL Management Studio genera caratteri nulli separati durante il salvataggio come CSV?
-
03-07-2019 - |
Domanda
e può essere configurato per non accadere?
Di solito mi ritrovo a salvare un risultato di una query come .csv e ad elaborarlo in seguito sul mio computer Unix. I caratteri che sono separati da null mi fanno filtrare quei caratteri ed è un po 'una seccatura.
Quindi, queste sono le domande:
- Perché è così?
EDIT:
Perché viene emesso in UTF-16 per impostazione predefinita. La conversione più semplice sarebbe quindi:
iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv
- Può essere disabilitato in qualche modo? Come?
Ecco una parte di un hexdump di un file così generato. Ogni carattere è seguito da a null char (00):
00000cf0 36 00 36 00 32 00 0d 00 0a 00 36 00 38 00 34 00 |6.6.2.....6.8.4.|
00000d00 30 00 36 00 32 00 31 00 36 00 0d 00 0a 00 36 00 |0.6.2.1.6.....6.|
00000d10 38 00 34 00 30 00 36 00 33 00 36 00 34 00 0d 00 |8.4.0.6.3.6.4...|
00000d20 0a 00 36 00 38 00 34 00 30 00 36 00 38 00 34 00 |..6.8.4.0.6.8.4.|
00000d30 32 00 0d 00 0a 00 36 00 38 00 34 00 30 00 37 00 |2.....6.8.4.0.7.|
00000d40 30 00 32 00 31 00 0d 00 0a 00 36 00 38 00 34 00 |0.2.1.....6.8.4.|
00000d50 30 00 37 00 37 00 39 00 37 00 0d 00 0a 00 36 00 |0.7.7.9.7.....6.|
00000d60 38 00 34 00 30 00 37 00 39 00 32 00 31 00 0d 00 |8.4.0.7.9.2.1...|
00000d70 0a 00 36 00 38 00 34 00 30 00 38 00 32 00 34 00 |..6.8.4.0.8.2.4.|
00000d80 31 00 0d 00 0a 00 36 00 38 00 34 00 30 00 38 00 |1.....6.8.4.0.8.|
00000d90 36 00 36 00 31 00 0d 00 0a 00 36 00 38 00 34 00 |6.6.1.....6.8.4.|
00000da0 30 00 38 00 37 00 35 00 31 00 0d 00 0a 00 36 00 |0.8.7.5.1.....6.|
00000db0 38 00 34 00 31 00 30 00 32 00 35 00 34 00 0d 00 |8.4.1.0.2.5.4...|
00000dc0 0a 00 36 00 38 00 34 00 31 00 30 00 34 00 34 00 |..6.8.4.1.0.4.4.|
Soluzione
Il file viene emesso in Unicode, non ASCII. Unicode utilizza il doppio del numero di bit per rappresentare ciascun carattere, quindi i precedenti 00.
Potrebbe esserci un'opzione per salvare come ANSI o ASCII, che dovrebbe usare caratteri a 8 bit.
Altri suggerimenti
So che questo è un vecchio post ... ma per i nuovi visitatori ...
Quando stai salvando i dati da Microsoft SQL Management Studio, noterai che il pulsante 'Salva' ha una piccola freccia accanto ad esso. Se selezioni la piccola freccia puoi selezionare "Salva con codifica ..." questo ti permetterà di selezionare la codifica che desideri.
Su Unix, suggerisco l'uso di iconv -futf-16le -tutf-8
per filtrare i tuoi output. : -)