Por que SQL Management Studio nula saída de caracteres separados ao salvar como csv?

StackOverflow https://stackoverflow.com/questions/208027

  •  03-07-2019
  •  | 
  •  

Pergunta

e ele pode ser configurado para não acontecer?

normalmente estou encontrando-me salvar um resultado de uma consulta como um arquivo .csv e processá-lo mais tarde na minha máquina Unix. Os caracteres sendo nula separados me faz ter para filtrar esses caracteres e é um pouco de dor.

Assim, estas são as perguntas:

  • Por que isso acontece?

EDIT:

Porque ele produz em UTF-16 por padrão. conversão mais fácil seria então:

iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv
  • É possível que ser desativado de alguma forma? Como?

Aqui está um pedaço de um hexdump de um arquivo assim gerada. Cada char é seguido por um nula 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.|
Foi útil?

Solução

O arquivo está sendo emitido em Unicode, não ASCII. Unicode usa o dobro de bits para representar cada caractere, daí o anterior 00 do.

Não pode ser uma opção para salvar como ANSI ou ASCII, que deve usar 8 caracteres bit.

Outras dicas

Eu sei que este é um post antigo ... mas para os novos visitantes ...

Quando você está salvando dados do Microsoft SQL Server Management Studio, você vai notar que o botão 'Save' tem uma pequena seta ao lado dele. Se você selecionar a pequena seta você pode selecionar 'Salvar com codificação ...' isso irá permitir que você selecione a codificação que você deseja.

No Unix, eu sugiro o uso de iconv -futf-16le -tutf-8 para filtrar a sua saída. : -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top