본문 바로가기
개발 노트/기초 지식

[java][python][그 외...] escape 문자

by tokkiC 2022. 5. 17.

다음과 같은 말을 출력하고 싶다

"호구마! '호박고구마!'"

 


자바에서 문자열을 출력하려면 system.out.print 또는 print 등을 통해 아래와 같이 출력가능하다

package tokkic.calendar;

public class test1 {

    public static void main(String[] args) {
        System.out.println(""호구마! 호박고구마!'"");   //  excetion  발생!!
    }

}

print()는 메소드는 인자로 받는 문자열이 큰따옴표(") 로 감싸줘야 한다. 그런 규칙을 가진다

거기에 내가 쓰고싶은 말인 "호구마! '호박고구마!'"을 쓰려고 했을뿐인데 왜 예외가 뜰까?

큰따옴표 안에 큰따옴표가 또 와서 그렇다. 이러면 자바에서 헷갈려서 예외가 뜬다

이럴경우엔 밖에 문법 규칙으로 쓰이는 큰따옴표는 냅두되,

내부의 큰따옴표를 문법 오류를 피하면서 사용하기 위해서

내부의 큰따옴표 앞에다 \ ( \ = \ 둘 다 역슬래시, \의 경우 'ㄱ한자버튼' 으로 칠수도 있다)를 사용한다

이러면 예외도 안뜨고 내부의 큰따옴표 출력도 제대로 된다

package tokkic.calendar;

public class test1 {

    public static void main(String[] args) {
        System.out.println("\"호구마! 호박고구마!'\"");   //  문제해결!!
    }

}

이렇듯 문자열내에서 특수한 기능을 하도록 돕는 문자들을 escape character (탈출 문자) 라고 한다

이스케이프 문자는 이스케이프 시퀀스 escape sequence 라고도 불린다.

어느 블로그에서는 원래의 의미를 '탈출, 벗어남' +한 escape 문자라고 하더라. 흠... 이해하자니 조금 부족하다

납득이 갈 이유를 찾다보니 외국의 한 사이트의 답변에서 답을 찾을수 있었다

https://www.quora.com/Why-are-characters-proceeded-by-%E2%80%9C-%E2%80%9D-called-an-escape-sequence-Why-are-they-required

요약, 해석하자면 우리가 쓸수있는 제어 문자(키보드로 입력하여 장치에 명령을 내릴수있는 문자)의 수가

제한적이고(키보드로 사용할수있는 키는 제한적) 언어 표현에 부족할 수 있으니 그것을 해결하기 위해 만든 문자이다

역슬래시 뒤에 문자를 써서 사용하며, 뒤에 쓰는 문자는 데이터 스트림(진행되던 코드)에서 "escape" 하게되는 것이다

즉, 문자열에 있는 문자의 "정상적인" 배열(sequence)에서 벗어나기(escape) 때문에 이스케이프 시퀀스라고 하는 것이다

언어마다 문법은 조금씩 다르지만 자바 뿐 아니라 파이썬, C 등의 여러 언어에서도 자주 사용되니 알아두자

 


java 의 escape 문자

이미지 출처 https://coding-factory.tistory.com/735

폼 피드 form feed : 프린트 출력 시 이 페이지는 여기까지만 출력! 다음 페이지부터 출력하시오!

  집에 있던 프린터는 인쇄 중 feed 버튼을 누르면 인쇄가 도중에 중단되고 주우욱 백지로 용지를 뱉었다

  그리고 새 페이지에서 인쇄가 중단된 부분부터 인쇄를 재개했던 기억이 있다

  마찬가지로 폼피드는 이 페이지에서 더이상 출력하지 말고 다음페이지로 넘어가서 다시 출력하라는 뜻이다 


캐리지 리턴 CR : 현재 위치를 나타내는 커서를 맨 앞으로 이동시킨다

                       윈도우의 경우 과거 타자기의 입력 방식을 따라서 옆으로 땡기고(CR) 위로 미는(LF:Line Feed) 

                       \r\n 와 같이 CR과 LF를 모두 입력해줘야 된다

과거의 타자기. 한줄을 다 치게 되면, 종이를 한 줄 간격만큼 위로 올려주고, 종이를 오른쪽 끝으로 이동시켜야만 새 줄을 칠 수 있었다. 캐리지는 타자칠때마다 움직이는 타자기의 윗부분을 말했다.

                       운영체제 별로 개행 문자는 아래와 같다.

  • DOS(Windows) : \r\n
  • UNIX 혹은 Linux : \n
  • Mac : \r 이것만으로 CR+LF을 의미한다.

운영체제 별로 문자가 다르기에 호환에 문제가 생기기도 하는데, 이럴 경우 아래의 링크를 참조하면 될것이다

https://www.devkuma.com/docs/windows/windows-unix-end-of-line/

이 문제는 아직 나에게는 급하지 않고 먼 문제기에 추후 문제에 마주할 시 다시 찾아보고 정리하려고 한다


아스키 코드 (=아스키 문자=ASCII) : 영문 사용 시의 대표 인코딩 코드이다. 컴퓨터 초창기 시절 영어권에서

                                               사용되었고 영어를 저장하기위해 16진수로 번호를 붙여 인코딩한것.

                                               찾아보니 꼭 알아야될 내용이고 양이 꽤 되니 따로 정리글을 쓰겠다

                                               하지만 우리는 한국인이니까 한글을 사용하기 위해 UTF-8로 인코딩하자

출처 http://metashower.egloos.com/720736

 

 

 


python 의 escape 문자

이미지 출처 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ssang8417&logNo=221436523428

이처럼 파이썬 및 다른 언어의 경우 일부 escape 문자가 자바와 기능이 다르니 확인 후 사용하자

너라는 문자를 양말대신 \을 주고 문자 배열에서 escape 하게 해줄거야

댓글