본문 바로가기

카테고리 없음

윈도우와 맥에서의 CR/LF 차이

문제의 발견

 

오늘의 주인공 코드 되시겠다. 실행 후 터미널에 값을 입력하면 그에 해당되는 아스키코드를 출력해준다. 

교재에 실린 예시의 정답은 터미널에 'a'를 입력해 97, 13, 10을 출력하는 것이다.

 

 

문제는 토시 하나 다르지 않게 작성한 코드에서도 당최 10은 출력되지 않았다는 것이다.

먼저 출력 결과를 분석해보자. 각각 출력된 결과물에 맞는 아스키코드를 찾아보면 아래와 같다.

 

a는 97. 

10은 LF(라인 피드)

중간에 있어야 했던 13은 CR (캐리지 리턴)이다.

 

라인 피드와 캐리지 리턴은 모두 줄바꿈과 연관이 있다. 그런데 왜 같은 기능을 하는 키가 두 개나 있을까?

그 이유는 두 키가 타자기에서 유래되었기 때문이다.

Source: Pixabay

 

라인 피드와 캐리지 리턴

 

컴퓨터에서는 단순히 엔터키를 탁 치는 것 만으로도 간단히 줄을 바꾸고 커서의 위치를 다음 줄의 맨 앞부분으로 옮길 수 있다.

하지만 타자기에서는 커서와 같은 입력 장치를 원위치(캐리지 리턴)시키고, 아랫줄로 내리기 위해 종이를 위로 밀어올려야(라인 피드) 한다.

이런 유래가 있기 때문에 컴퓨터에서도 줄바꿈을 CR+LF로 처리하는 것이다.

 

그럼 10(LF)는 나오는데, 왜 13(CR)은 없었을까?

 

이는 유닉스와 윈도우의 차이에서 기인한다.

윈도우의 경우 엔터를 치면 줄바꿈을 처리하기 위해 CRLF가 모두 입력된다.

그렇기에 윈도우에서 상기 코드를 실행했다면 97, 13, 10이 모두 출력되었을 것이다.

 

반면, 유닉스에서는 줄바꿈을 처리할 때 LF만 사용된다. 그렇기 때문에 사용되지 않은 13은 빼고 97과 10만 출력된 것이다.