확장비트열(escape sequence)
아스키 문자 집합의 27번째 문자인 확장 문자(ESC)로 시작되는 비트열. ESC와 1개 또는 2개 이상의 문자의 집합으로 이루어지는 확장 비트열은 인쇄기와 같은 주변 장치와 프로그램에 대해서 어떤 명령을 수행하도록 하는 제어 문자로 사용된다. 확장 비트열은 특히 인쇄기에 대해서 강조 활자(굵은 활자)로 인쇄하게 하는 등 다양한 명령을 내리는 데 사용된다. 

이스케이프 시퀀스(escape sequence)는 컴퓨터와 주변 기기의 상태를 바꾸는 데에 쓰이는 일련의 문자열이다. 제어 시퀀스(control sequence)라고도 한다. 일부 제어 시퀀스는 늘 같은 의미를 지니고 있는 특수 문자이다. 이스케이프 시퀀스는 이스케이프 문자를 이용하여 이를 따르는 문자들의 뜻을 바꿀 수 있는데, 여기서 문자들은 데이터가 아닌 실행 명령어로 해석할 수 있다. 






키보드의 "엔터키"에 해당하는 "Escape 문자"는, \n 입니다. 즉, "백슬래쉬+소문자n" 입니다. 각종 프로그래밍 언어에서나, 편집기 등에서 \n 을 엔터키 대신에 사용할 수 있습니다.

그런데 \n 이것은 원래 유닉스(Unix)나 리눅스(Linux)에서의 엔터 키입니다. 윈도우나 도스(MS-DOS)에서는 엔터키를 "\r\n" 이렇게 표현해 주어야 하는데, 프로그램이 자동으로 \n 을 \r\n (소문자 R + 소문자 N)으로 변환해 주기 때문에, 윈도우에서도 대부분 \n 을 사용하면 됩니다.

Perl이나 C언어에서, Enter키의 Escape 문자 사용 예제:

▶▶ C언어 Perl 자바] 줄바꿈/개행문자/행갈이문자/Newline: \n 이란?


자바 프로그래밍에서는 엔터키를 %n 이렇게 표현하는 것이 좋습니다:

▶▶ 자바/Java] System.out.format() 줄바꿈, 운영체제(OS) 종류에 맞게; line separator



출처 - http://mwultong.blogspot.com/2007/08/enter-escape-sequence.html






문자 출력의 특별한 경우가 있다. printf() 함수에서 개행문자(‘\n’)을 사용해 왔다. 개행문자는 사용하면 어떻게 되는가? 엔터키를 입력되어 한줄 내려간다. 이는 개행문자에서 \(또는 \)는 아스키 코드의 본래 의미에서 벗어나 다른 의미를 가진다. 이러한 문자들을 확장 문자 (escape sequence) 라 한다. escape sequence는 하나의 문자상수로 취급하며 반드시 \(\)와 함께 작은 따옴표로 묶어서 하나의 문자로 표시해야 한다.

다음 소스를 보자. 

★ 소스


#include <stdio.h>

int main()
{
char A; 

A='\\';                 // escape sequence 
printf("%d\n", A); 

return 0;
}


★ 소스 설명
 

A='\\'; 

\\가 두번 사용되어졌다. 하나만 사용하면 에러가 날 것이다. 
컴파일러에서 \뒤에 있는 것은 해석하지 않도록 만들었다.

A=’\’;

하나만 사용하면 A=’; 이렇게 인식을 한다는 것이다. 
따라서 개행문자도 \n을 사용하므로서 뒤에 n을 문자로 인식하지 않는다(인식하지 않고 두바이트가 합해져서 개행을 의미하는 확장문자이다). escape sequence의 종류에 대해 알아보자.

escape sequence

Represents

의미

\0

NULL

공백 문자

\a

Bell (alert)

경보 문자

\b

Backspace

백스페이스

\f

Formfeed

새 페이지로

\n

New line

다음 줄로

\r

Carriage return

현재 행의 처음으로

\t

Horizontal tab

수평 탭 문자

\v

Vertical tab

수직 탭 문자

\'

Single quotation mark

작은 따옴표

"

Double quotation mark

큰 따옴표

\\

Backslash

백슬래쉬

\?

Literal question mark

물음표

ooo

ASCII character in octal notation

아스키 문자의 8진수 표기

\xhh

ASCII character in hexadecimal notation

아스키 문자의 16진수 표기



★ 실행 결과






출처 -  http://air802.tistory.com/73


'Development > Common' 카테고리의 다른 글

Freemarker  (0) 2012.02.26
1세대/2세대/3세대/4세대/5세대 언어  (0) 2012.02.24
엔터의 의미, CR LF  (0) 2012.02.18
참조 구현(Reference Implementation)  (0) 2012.02.09
스크립트 언어(Script Language)  (0) 2012.02.05
Posted by linuxism
,


개행 LF : Line Feed(ASCII 10)

복귀 CR : Carriage Return(ASCII 13)

 

간단하게 타자기를 생각을 하면 한 글자씩 입력하면 먼지 옆으로 한 칸씩 밀려 나고

한 줄을 다 입력하고 나서는 그걸 왼쪽으로 밀어 주고 또 입력을 하는 것을 영화에서 봤을 것이다.

 

간단하게 한 줄에서 왼쪽 끝으로 밀어주는 것이 CR이고

다음 줄에 입력을 하도록 종이를 한 줄 밀어주는 것이 LF 라고 할 수 있다.

 

어떤 연유에서 처리방법들이 그렇게 달라진지는 모르겠지만

 

DOS/Windows 계열에서는 엔터를 CR+LF(\r\n) 으로 처리하고

Unix/Linux 계열에서는 엔터를 LF(\n)으로 처리하고

MAC 계열에서는 엔터를 CR(\r)로 처리한다고 한다 <- 요건 접해보질 않아서..

 

* \rreturn \nnewline를 의미한다.

 

굳이 DOS/Windows 상황에서 \r\n의 차이점을 느끼려면 파일을 읽을 때 binary모드로 읽으면 파일에 엔터가 \r\n으로 표기 되지만 ASCII 모드로 읽으면 \n 으로만 표기가 되는 것을 알 수 있다.

 

그래서 옛날에 캐리지 리턴과 라인 피드를 쓰면 보통 우리가 '엔터'키를 누른 듯한 효과를 냅니다


windows
는 개행을 케리지 리턴(cr)과 라인 피드(lf)이 두 개의 문자를 개행코드로 하고, 유닉스는 라인 피드를 개행코드로 하며,  멕킨토시는 케리지 리턴을 개행코드로 합니다.

 

[출처 : http://blog.naver.com/ys9922?Redirect=Log&logNo=90025503930]







새줄 문자(newline)는 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다. 개행 문자줄바꿈 문자(line break), EOL(end-of-line)과 같은 뜻이다. 기종이나 운영 체제에 따라 새줄 문자를 나타내는 코드가 다를 수도 있다. 그래서 텍스트를 다른 시스템으로 전송할 때 새줄 문자의 치환 작업도 필요하다.

새줄 문자가 마지막 줄 끝에도 들어가는지 여부가 헷갈릴 수 있다. 대부분의 시스템이 관습적으로 마지막 줄 끝에도 새줄 문자를 넣는다. 프로그램 중에는 마지막 줄 끝에 새줄 문자가 없으면 오류가 발생하는 것도 있다.

자동 줄 바꿈 기능이 있는 소프트웨어는 주로 문단 사이 또는 수직 목록 사이에서 새줄 문자를 사용한다. 새줄 문자를 사용하는 방식으로 하드 리턴과 소프트 리턴이 있다.

역사[편집]

ISO와 ASA(ANSI의 전신)는 동시에 ASCII를 개발했다. 1963년부터 1968년까지 ISO 초안은 CR+LF와 LF를 새줄 문자로 정했다. ASA의 초안은 CR+LF만 지원했다. CR+LF는 텔레타이프, ASR33을 콘솔 장치로 사용한 초기 컴퓨터 시스템에서 널리 쓰였다.

텔레타이프의 프린터가 다음 줄의 처음부터 인쇄하기 위해서는 두 글자를 인쇄하는 시간이 필요했다. 텔레타이프는 텍스트의 한 글자를 같은 시간 간격으로만 프린터로 전송할 수 있었다. 프린터에서 좌우로 움직이는 장치가 캐리지(carriage)였는데 이것이 오른쪽 끝에서 왼쪽 끝으로 이동하는 시간이 두 글자 인쇄하는 만큼 걸렸다. 새줄 문자로 코드 하나만 쓸 경우 다른 한 글자를 인쇄할 수 없었다. 그래서 텔레타이프를 쓰던 시절에는 CR+LF 두 코드를 새줄 문자로 썼다. 캐리지 리턴이 먼저 전송되었다. 그리고 종이를 한 줄 옮기는 라인 피드가 이어서 전송되었다. 좌우 여백이 줄어들면 캐리지가 이동하는 시간이 더 필요하므로 CR이나 NUL을 더 채워 넣어야 할 때도 있었다.

컴퓨터가 막 탄생하던 시절에는 디스크와 메모리가 비쌌기 때문에 1964년에 나온 운영 체제 멀틱스는 새줄 문자를 LF 하나로 통일했다. 유닉스도 멀틱스의 새줄 문자 관례를 이어받았고 리눅스도 이 방식을 쓰고 있다.

1981년에 등장한 MS-DOS는 CP/M의 CR+LF 방식을 따랐다. CP/M은 시리얼 라인으로 터미널을 연결했기 때문에 화면 전환 속도가 느렸다. 느린 터미널에서 줄바꿈이 있을 때 스크롤 하는 시간과 보조를 맞추기 위해 CR+LF 방식을 쓰는 것이 자연스러웠다. 윈도도 이 관례를 따르고 있다.

표현[편집]

줄바꿈을 표현하는 방법은 시스템과 운영 체제에 따라 여러 가지가 있다. 윈도는 ASCII의 CR+LF로 새줄을 나타내고 유닉스는 LF로 새줄을 나타낸다. 맥 OS은 새줄 문자로 버전 9까지 CR을 썼지만 버전 10부터 LF를 쓰고 있다. 새줄 문자로 이밖의 다른 코드를 사용하는 시스템도 있다. 특정 코드를 사용하지 않고 레코드 하나에 한 줄씩 저장하거나 줄의 길이를 고정시켜서 줄바꿈을 표현하는 시스템도 있다.

ASCII[편집]

ASCII 시스템에서는 새줄 문자로 라인 피드(line feed, LF, '\n', 0x0A), 캐리지 리턴(carriage return, CR, '\r', 0x0D)이 주로 사용된다. 라인 피드는 프린터에서 종이가 한 줄씩 인쇄되며 나오는 것을 뜻한다. 캐리지 리턴은 프린터에서 실제 인쇄를 수행하는 장치가 한 줄의 끝에서 시작 위치로 돌아가는 것을 뜻한다. 새줄 문자로 드물게 RS(record separator, 0x1E)를 쓰는 시스템도 있었다.

ASCII의 새줄 문자
LF멀틱스유닉스리눅스제닉스AIXOS XFreeBSD
CR+LFDEC TOPS-10RT-11CP/MMP/M도스OS/2윈도심비안 OS팜 OS
CR콤모도어 8비트 머신TRS-80애플 II맥 OS (버전 9 이하), OS-9
RSPOSIX 이전의 QNX

HTTPSMTPFTPIRC 등 인터넷 프로토콜 대부분은 ASCII의 CR+LF를 새줄 문자로 사용하도록 규정하고 있다. 그러나 홀로 쓰인 LF도 지원하도록 권장하고 있다.

유니코드[편집]

유니코드 표준은 여러 글자를 줄바꿈 문자로 정의했다. 유니코드를 지원하는 프로그램은 이것들을 한 줄의 끝으로 인식해야 한다.

유니코드의 새줄 문자
LF라인 피드(Line Feed), U+000A
FF폼 피드(Form Feed), U+000C
CR캐리지 리턴(Carriage Return), U+000D
CR+LF연속된 CR과 LF
NEL다음 줄(Next Line), U+0085
LS줄 구분자(Line Separator), U+2028
PS문단 구분자(Paragraph Separator), U+2029

EBCDIC[편집]

IBM 메인프레임, z/OS(OS/390), i5/OS(OS/400) 등 EBCDIC 시스템은 새줄 문자로 NEL(next line, 0x15)을 사용한다. EBCDIC에도 CR, LF로 불리는 글자가 있지만 ASCII의 것과 코드가 다르다. EBCDIC 시스템 중에는 NEL 코드가 다른 것도 있어서 주의해야 한다.

기타 코드[편집]

CDC 6000 시리즈의 운영 체제는 60비트짜리 단어 끝 부분에 6비트짜리 글자 2개 이상이 0으로 채워진 상태를 새줄 문자로 정의했다. 채우는 문자로 0 대신 콜론이 되도록 설정을 바꿀 수 있었다. 싱클레어 리서치의 가정용 컴퓨터, ZX80, ZX81은 새줄 문자 코드가 0x76이었다.

레코드 방식[편집]

옛날의 메인프레임 운영 체제는 텍스트 한 줄마다 레코드에 저장하는 방식이었다. 레코드의 시작 부분에 캐리지 제어 문자를 둬서 줄바꿈 여부, 캐리지 리턴 여부를 조절할 수 있게 했다.

몇몇 메인프레임 운영 체제는 고정된 줄 길이로 한 줄을 저장했다. 그 길이는 주로 80자였다. 외부에서 텍스트 파일을 받았을 때 한 줄이 80자보다 짧으면 공백 문자로 채워야 했고 한 줄이 너무 길면 잘려나갔다. 이것은 천공 카드의 방식을 흉내낸 것이다. 천공 카드 한 장마다 한 줄씩 기록했고 이 길이가 80자였다.

OpenVMS도 레코드 기반 파일 시스템을 사용한다. 텍스트 파일을 저장할 때 레코드마다 한 줄씩 저장한다. 대부분 파일 형식이 줄 구분 문자를 사용하지 않지만 레코드 관리 서비스가 투명한 새줄 문자를 삽입할 수 있다.

같이 보기[편집]


출처 - http://ko.wikipedia.org/wiki/%EC%83%88%EC%A4%84_%EB%AC%B8%EC%9E%90





Posted by linuxism
,

varchar 는 가변형 길이를 말합니다.

varchar(100) 이라면 저장소 크기는 100 바이트가 아니라 실제 입력한 바이트 길이라는 이야기죠.

두개의 차이라면 varchar 는 ms-sql 에서 사용하는 형식이고 varchar2는 oracle 에서 사용하는 형식이죠
 

varchar와 varchar2의 차이점을 간략하게 설명 드리겠습니다.
 
mysql, mssql등에서 varchar를 사용하죠..
 
그건 데이터 길이를 의미합니다.
 
varchar는 문자길이 255자까지 가능하지 않습니까?
 
근데 오라클에서의 varchar2는 4000바이트(한글2000자, 영문4000자)까지 저장이 됩니다.
 
그런 차이가 있습니다.


 

number (정밀도,배율)

정밀도 : 소수점의 오른쪽과 왼쪽에 저장될수 있는 전체 자릿수의 최대값

배율 : 소수점의 오른쪽에 저장도리수 있는 최대 자릿수, 기본값은 0 이므로 0 <=배율 <=정밀도 이어야 합니다.

 number(5,2) 는 최대 정수자리 3자리, 소수자리 2자리를 입력 받을수 있는 숫자형 데이터 형식 입니다.

number(5,2) 라고 정의하시면 정수부분 3자리 이상 넘어갈수 없습니다.


출처 - 네이버지식


'DB > Common' 카테고리의 다른 글

회원 정보 테이블 설계 시 고려 사항  (0) 2012.03.17
SQLite  (0) 2012.03.02
CHAR()와 VARCHAR2() 차이  (0) 2012.02.13
TABLE의 key  (0) 2012.01.09
데이터베이스 언어(DBL; DataBase Language)  (0) 2012.01.03
Posted by linuxism
,