곧은따옴표("") 와 둥근따옴표(““)의 차이를 아시나요?
링크드인 인사이트 태그와 관련된 답변에도 다음과 같은 문제가 언급됩니다.
언뜻 눈으로 보기에 차이가 없어보이지만, 개발을 진행하다가 둥근따옴표를 만나 어려움을 겪은 적이 있어 남겨놓게 되었습니다.
보통 우리에게 익숙하고, 많이 사용하는 따옴표는 곧은따옴표
입니다.
그렇다면 개발을 하며 둥근따옴표
를 만나게 된 이유는 뭘까요..?
======================================
먼저, 둘이 다른 문자인지부터 확인해볼 필요가 있었습니다.
char straightDoubleQuote = '"';
char curvedDoubleQuote = '“';
int unicodeStraightDoubleQuote = (int) straightDoubleQuote;
int unicodeCurvedDoubleQuote = (int) curvedDoubleQuote;
System.out.println("곧은따옴표 유니코드 값 : " + unicodeStraightDoubleQuote);
System.out.println("둥근따옴표 유니코드 값 : " + unicodeCurvedDoubleQuote);
곧은따옴표 유니코드 값 : 34
둥근따옴표 유니코드 값 : 8220
둘은 서로 다른 유니코드 값을 갖는다는 것을 확인했습니다. 그렇다면 개발에서 어떤 차이가 있을까요?
서버를 실행할 때 VM arguments를 넘겨줘야 하는 상황이었고,
VM arguments를 다음과 같이 텍스트로 전달 받았다고합시다.
// 앞(둥근따옴표), 뒤(곧은따옴표)
“parameter1“ "parameter2"
해당 값을 인자로 넣고 서버를 run 하였지만 에러가 발생하였고, 문제를 찾기 위해 디버깅을 진행하였습니다.
디버깅 결과 및 콘솔창을 보면 arguments가 다음과 같이 넘어온다는 것을 파악할 수 있었습니다.
곧은따옴표는 VM arguments로 넘어오면 String으로 처리되지만, 둥근따옴표는 String으로 인식되지 않는 것을 확인할 수 있었습니다.
========================
그렇다면, 둥근따옴표는 어디에서 등장했을까요? 나무위키에 정리된 게 있어 가져와봤습니다.
일반적으로 PC의 웹과 같은 환경에서 사용할 때는 편의상 처음과 끝을 구분하지 않는 곧은 따옴표(Straight quotation mark)(', ")를 사용한다. 곧은 따옴표는 타자기에서 키보드의 키 수를 줄이기 위해서 처음 도입되었다.
하지만 공식적인 문서나 디자인 등에서 처음과 끝을 구분하는 둥근 따옴표(Curved quotation mark)[11](‘ / ’, “ / ”)를 사용해야 할 때가 있다. 따라서 워드, 한글과 같은 문서 작성 프로그램이나 일러스트레이터, 인디자인과 같은 디자인 툴에서는 따옴표의 모양을 설정할 수 있는 옵션이 존재한다.
========================
확인해본 결과 인자값으로 전달받았던 코드가 PPT에서 가져온 코드라는 것(!)을 알게 되었고
PPT에서 따옴표가 변환되었을 것이라 추측했습니다.
PPT 설정을 뒤져본 결과
PPT는 자체적으로 곧은따옴표를 둥근따옴표로 바꿔주는 설정이 있기 때문에, PPT에 절대 코드를 넣었다가 빼는 일은 없도록 합시다!