2008-10-16 43 views
1

它可以配置不发生?为什么当保存为csv时,SQL Management Studio输出空分隔字符?

我通常发现自己保存查询为.csv的结果,后来我的Unix机器上处理它。被分隔为空的字符使我必须过滤这些字符,并且有点痛苦。

所以,这些都是问题:

  • 为什么会这样呢?

编辑:

因为它在UTF-16缺省输出。那么最简单的转换将是:

iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv 
  • 是否可以以某种方式禁用?怎么样?

这里的一个片这样产生的文件的hexdump都的。每个字符之后是 空字符(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.| 

回答

6

该文件以Unicode正在被输出,而不是ASCII。 Unicode使用两倍的位来表示每个字符,因此前面的00。

有可能是将其保存为ANSI或ASCII的选项,这应该使用8个字符。

+0

是的,我很习惯了UTF-8我忘记UTF-16。 – 2008-10-16 10:23:12

+0

但我看不到设置编码的选项 – 2008-10-16 10:24:33

1

在Unix上,我建议使用iconv -futf-16le -tutf-8来过滤输出。 :-)

+0

是的,我已经这样做了:)。为什么呢? – 2008-10-16 10:30:02

2

我知道这是一个古老的职位,而是为了新访客...

当您从Microsoft SQL Management Studio中保存数据,你会发现,“保存”按钮有它旁边的小箭头。如果您选择小箭头,您可以选择“使用编码保存...”,这将允许您选择您想要的编码。

相关问题