CSV로 저장할 때 SQL Management Studio가 NULL이 분리 된 문자를 출력하는 이유는 무엇입니까?
-
03-07-2019 - |
문제
그리고 발생하지 않도록 구성 할 수 있습니까?
나는 보통 쿼리의 결과를 .csv로 저장하고 나중에 Unix 시스템에서 처리하고 있습니다. 무효가되는 캐릭터는 그 숯을 걸러 내야하며 약간의 고통입니다.
그래서 이것들은 다음과 같습니다.
- 왜 그렇게예요?
편집하다:
기본적으로 UTF-16에서 출력되기 때문입니다. 그런 다음 가장 쉬운 변환은 다음과 같습니다.
iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv
- 어떻게 든 비활성화 될 수 있습니까? 어떻게?
다음은 이렇게 생성 된 파일의 6 배가 있습니다. 각 char 다음에 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가 아닌 유니 코드에서 출력됩니다. 유니 코드는 각 문자를 나타내기 위해 두 배의 비트를 사용하므로 앞 00 년대입니다.
ANSI 또는 ASCII로 저장할 수있는 옵션이있을 수 있으며, 이는 8 개의 비트 문자를 사용해야합니다.
다른 팁
나는 이것이 오래된 게시물이라는 것을 알고 있습니다 ... 그러나 새로운 방문객들에게는 ...
Microsoft SQL Management Studio에서 데이터를 저장할 때 '저장'버튼에 옆에 작은 화살표가 있음을 알 수 있습니다. 작은 화살표를 선택하면 '인코딩으로 저장 ...'를 선택하면 원하는 인코딩을 선택할 수 있습니다.
유닉스에서는 사용을 제안합니다 iconv -futf-16le -tutf-8
출력을 필터링합니다. :-)
제휴하지 않습니다 StackOverflow