1

它可以配置为不发生吗?

我通常会发现自己将查询结果保存为 .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.|
4

3 回答 3

6

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

可能有保存为 ANSI 或 ASCII 的选项,应使用 8 位字符。

于 2008-10-16T10:17:52.867 回答
2

我知道这是一个旧帖子...但是对于新访客...

当您从 Microsoft SQL Management Studio 保存数据时,您会注意到“保存”按钮旁边有一个小箭头。如果您选择小箭头,您可以选择“使用编码保存...”,这将允许您选择所需的编码。

于 2010-01-19T08:38:26.133 回答
1

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

于 2008-10-16T10:22:50.783 回答