본문 바로가기

개발일지

개행 코드 「CR」・ 「LF」・ 「CRLF」의 차이

 

회의 시작 전에 어색하게 백엔드 리더 A상과 둘이 있다가 갑자기 '카이교코-도'에 대해서 이런저런 질문을 하길레...나는 '카이교 코도??' 뭔 솔...? 순간 당황해서 어버버거리다 그거 뭐냐고 다시 물어보고 난리도 아니었다. A상은 필시 '이새끼 뭐지...?'라고 생각했을 것 같다.

 

한국어로는 '강제줄바꿈', '줄바꿈' 이렇게 쓰는 거 같고 전산학에서는 개행(line alignment)이라고 한다.

나무위키를 찾아보니, 잘못해서 아스키문자가 뿌려지는 시절도 있었다는... 그런 역사도 있다.

PC통신 시절에 쓰던 VT 환경은 가로가 80바이트로 제한이 되어 있었는데, 2바이트 코드 지원이 미비해서 맨 끝 글자가 깨지는 일이 잦았다. 예를 들어, 한 행의 80열째에 글자를 쓰면 80, 81열에 한글 코드가 기록이 되어야 하는데, VT상에서 81열은 없기 때문에 앞부분 코드만 기록되고 뒷부분 코드는 잘려버린다. 이렇게 되면 전혀 의도하지 않은 문자가 출력되는데, 한글 코드 맨 앞 비트가 1로 시작하기 때문에 아스키 코드 확장 영역에 있는 특수문자가 뿌려지는 일이 많았다. 강제 줄 바꿈을 하는 이유는 이런 일을 막기 위함이었고, 당시 PC통신 프로그램의 편집기는 아예 자동으로 개행을 넣어주는 일이 많았다.

나무위키: 강제줄바꿈에 관하여

 

다시 보니 특별한 건 아니고, 내가 용례를 몰라서 못알아들은 거... /n이런 걸 카이교코도(개행코드)라고 하나보다.근데 단순히 이게 개행코드다! 라는 것보단 이런저런 상황이 얽혀있으니 좀 더 자세히 공부할 필요를 느낌.

 

Qitta의 한 기사에 누군가 정리를 잘 해놨다.

https://qiita.com/sbeleg_77/items/833de09f7bca24bc8ab8

이미지 썸네일 삭제
【備忘録】改行コード「CR」「LF」「CRLF」の違い - Qiita

■改行コード それぞれの違い、役割◆業務内(IT時の膨大なDBデータの各テーブルの件数を条件付きで取得するselect文を作成する際、Excelからサクラエディタに貼り付けて改行コードを入れる作業…

qiita.com

 

번역을 좀 해서 살을 붙여보자.

 

■ 개행 코드 각각의 차이점과 역할

 

1. CR (Carriage Return, 캐리지 리턴)

🔹 영어 의미: 복귀 (Return)

🔹 역할: 커서를 줄의 맨 앞으로 이동시킴.

🔹 시각화: ←

🔹 사용처: Mac OS (버전 9까지) 등

 

2. LF (Line Feed, 라인 피드)

🔹 영어 의미: 개행 (Line Feed)

🔹 역할: 커서를 새로운 줄로 이동시킴.

🔹 시각화: ↓

🔹 사용처: Unix 계열 (Linux 등)

 

3. CRLF (Carriage Return + Line Feed, 캐리지 리턴 + 라인 피드)

🔹 영어 의미: CR + LF

🔹 역할: 커서를 줄 맨 앞으로 이동하고, 다음 줄로 개행.

🔹 시각화: ↵

🔹 사용처: Windows 등


■ 각 OS에서의 개행 코드 차이

  • LF: Unix 계열 (Linux, macOS 등)
  • CR: MacOS (버전 9까지)
  • CRLF: Microsoft Windows

■ 정규 표현식에서 개행 코드 사용

  • LF: \n (단순 개행)
  • CR: \r (커서를 줄 맨 앞으로 이동)
  • CRLF: \r\n (개행 후, 커서를 줄 맨 앞으로 이동)
print("Hello\nWorld")  # LF 사용 → Hello와 World가 다른 줄에 출력됨
print("Hello\r\nWorld")  # CRLF 사용 → Windows에서 줄바꿈 처리
 

 

🔹 기타 사항

  • 텍스트 파일을 다른 OS에서 열었을 때 줄바꿈이 깨지는 이유는 개행 코드 차이 때문
  • 웹 브라우저와 프로그래밍 언어: 일반적으로 \n(LF)을 사용
  • Git 설정: Windows에서는 core.autocrlf=true 설정 시 자동 변환 가능
  • 텍스트 파일 간 차이 해결: dos2unix, unix2dos 등의 유틸리티 사용
    • dos2unix 같은 도구를 사용하면 개행 코드를 변환할 수 있습니다.
    • Git에서는 Windows와 Unix의 개행 코드 차이를 자동으로 처리하는 설정(core.autocrlf)이 있음