개행문자가 도스형식으로 되어있어 경우, 모든 줄 끝에 음표모양이 붙어 나오는 현상이 벌어질 때가 있습니다. 특히 문서 전체를 DB에 보관하는 경우 한 칼럼에 엔터기호까지 넣을 경우, 그 엔터기호가 도스형식 개행문자일 때 그런 문제가 발생합니다.
* 해결방법 :
개행문자 (0D 0A = CR LF) 를 (0A = LF) 로 변환합니다. 즉, text에서 헥사코드 '0d'를 없애줍니다.
* 변환코드 :
data b;
set kk(obs=1 keep=question2);
question3=compress(question2,'0d'x);
run;
proc export data=rwork.b(obs=1) dbms=excel2000 replace outfile='c:/b.xls'; run;
* ex. 원본 'question2' -> '0D'를 없앤 뒤 'question3'
* 참고자료 :
1. 도스 텍스트 파일과, 유닉스 텍스트 파일의 차이점: DOS-UNIX Text File
텍스트 파일은 운영체제에 따라 조금 달라서, 다른 운영체제에서 텍스트 파일을 읽으면, 행의 끝부분이 이상하게 나올 수 있습니다. 즉 줄바꿈 문자가 서로 다른 것입니다.
a. 도스의 텍스트 파일은, 각 행의 끝부분이 16진수로 0D 0A 라는 2개의 문자로 되어 있습니다. 옛날의 MS-DOS에서 시작되어, 현재 윈도우XP 이상의 운영체제에서도 계속 사용됩니다. 행갈이 문자가 2바이트이기에, 쓸데없이 파일 용량이 증가하고, 만약 0D 0A 의 짝이 맞지 않으면 복잡한 문제가 생기는 단점이 있습니다.
b. 유닉스/리눅스의 텍스트 파일은, 각 행의 끝부분이 16진수로 0A 라는 1개의 문자로 되어 있습니다.
c. 매킨토시(MAC)의 텍스트 파일은, 각 행의 끝부분이 16진수로 0D 라는 1개의 문자로 되어 있습니다.
즉, 줄바꿈 문자만이 다른 것입니다. 키보드의 Enter키를 쳐서 다음줄로 넘어갈 때 입력되는, 눈에 보이지 않는 문자가 "줄바꿈 문자" 또는 "개행문자"입니다.
그래서 유닉스 텍스트 파일을 윈도우의 메모장에서 보면, 모든 줄이 하나로 이어져 나와서 읽기 곤란합니다. 이때는 울트라에디트(UltraEdit) 같은 본격적인 텍스트 편집기로 읽어야 합니다. 그 외의 다른 부분은 똑같습니다.
2. C에서 출력형식 지정.
"\n" 으로 줄바꿈한 부분은 "유닉스 줄바꿈(0A = LF)"이고
"\r\n" 으로 줄바꿈한 부분은 "도스 줄바꿈(0D 0A = CR LF)"으로 강제로 지정되어 있습니다.
3. vim에서는 :set ff=unix (from 응사마)
'일 > Data Mining' 카테고리의 다른 글
연관규칙에서 사용하는 LIFT 에 대한 간단한 설명. (0) | 2008.08.11 |
---|---|
왜도(skewness) 첨도(kurtosis) (0) | 2008.08.11 |
map & reduced model (0) | 2008.06.02 |
[SAS Tip] SAS 데이터셋 생성시 set문 2번 쓰기. (0) | 2008.04.30 |
[SAS tip] SAS 데이터셋 생성시 compress 옵션 사용. (0) | 2008.03.17 |