csvとして保存するときにSQL Management Studioがヌル区切り文字を出力するのはなぜですか?

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

  •  03-07-2019
  •  | 
  •  

質問

それが発生しないように構成できますか?

通常、クエリの結果を.csvとして保存し、後でUnixマシンで処理します。文字がヌルで区切られているため、これらの文字をフィルタリングする必要があり、少し面倒です。

だから、これらは質問です:

  • これはなぜですか?

編集:

デフォルトではUTF-16で出力するため。最も簡単な変換は次のようになります:

iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv
  • どういうわけか無効にできますか?方法は?

このようにして生成されたファイルの16進ダンプの一部を次に示します。各文字の後には 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.|
役に立ちましたか?

解決

ファイルはASCIIではなくUnicodeで出力されています。 Unicodeは、各文字を表すために2倍のビットを使用するため、先行する00になります。

8ビット文字を使用するANSIまたはASCIIとして保存するオプションがあるかもしれません。

他のヒント

これは古い投稿であることを知っています...しかし、新しい訪問者向けです...

Microsoft SQL Management Studioからデータを保存すると、[保存]ボタンの横に小さな矢印が表示されます。小さな矢印を選択すると、「エンコーディングを指定して保存...」を選択できます。これにより、希望するエンコーディングを選択できます。

Unixでは、 iconv -futf-16le -tutf-8 を使用して出力をフィルタリングすることをお勧めします。 :-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top