[Java / 기록] Intellij 캐리지 리턴 관련

박진용·2022년 8월 8일
0

발단

인풋 관련 기능을 테스트하던 중에 이상한 점을 발견했다

윈도우는 기본적으로 CRLF로 엔터시 (\r\n)이 입력되야 하는데

조건인 캐리지 리턴(\r)이 걸리지 않았다.

실험

단순히 콘솔로부터 입력받은 것을 \r이 나오기전까지 한글자씩 출력한다.

예상 결과로는 JAVA를 입력했을때 CRLF가 엔터시에 입력되어 2Byte가 추가되어

입력된 Byte는 총 6바이트이어야 한다.

그런데 실행결과는 5바이트, 그리고 캐리지 리턴을 만나지 못해 반복문을 빠져나오지 못하고

계속 입력을 받고 있다.

요약하면, **윈도우에서는 엔터입력시 CRLF(\r\n)이 입력되어야 하는데, 리눅스나 맥OS처럼 \n만

입력되고 있다.**

구글링해보니 비슷한 문제가 있는 게시글을 발견(아래)

https://youtrack.jetbrains.com/issue/IDEA-147282/Carriage-return-character-is-not-printed-in-run-console

인텔리제이 터미널의 버그라는 글로 추측된다고해서

버그인지 확인하기위해 같은 소스를 powershell 또는 cmd로 실행해본다.

결과

1) powershell 실행결과

2) cmd 실행결과

위 실행결과와 달리 Stream Available에 찍힌 바이트수가 다르다.

정확히 버그인지, 원인이 뭔지는 모르겠으나 기록으로 남겨두려고 한다.

profile
하루하루 깊어지자

0개의 댓글