본문 바로가기
Programming/프로그래밍 이론

[프로그래밍 이론] 반각문자 @와 전각문자 @

by SpiralMoon 2019. 10. 10.
반응형

 주제 : 반각문자 @와 전각문자 @

 

반각문자와 전각문자에 대해 알아보고 실제 프로그래밍 상황에서 어떤 문제가 발생하는지에 대해 알아보자.

 

▶  상황

 

다국어를 지원하는 모바일 앱을 개발 및 테스트 하던 도중 일본어 환경에서 회원가입이 되지 않는 문제가 발생하였다.

정규식을 통해 이메일 형식 아이디를 입력받게 구현되있었는데, 제대로 입력했음에도 정규식이 통과하지 않는 것이었다!

 

▶  원인

 

위의 상황이 발생한 원인은 일반적인 자판의 반각 골뱅이표시(@)와 일본어 자판의 전각 골뱅이표시(@)가 서로 다른 문자이기 때문에 반각 골뱅이표시만으로 이메일 형식을 검사하는 정규식에 통과하지 못했던 것이다.

 

즉, 두 골뱅이표시를 나타내는 유니코드가 각각 다르다. 완전히 다른 문자라는 것이다.

(이 글을 보고있는 환경에 따라서 두 골뱅이가 똑같이 보일 수도 있음)

 

한국과 일반적인 영어권 국가에서는 아스키 반각 문자를 사용하는데 일본은 아스키 문자를 반각 & 전각 혼용해서 사용한다.

 

▶ 전각문자와 반각문자

 

컴퓨터상에서 글자를 표현할 때 글자의 폭을 정사각형으로 표현하는 것이 전각문자이며, 전각문자의 가로폭을 절반으로 줄인것이 반각문자이다.

 

한자 문화권에서 제일 많이 쓰이는 개념이며, 이외에도 확장 로마자의 경우에 인코딩 방식에 따라서 전각/반각이 나뉘어지는 경우도 있다.

한자히라가나, 한글모두 전각문자이며, 한국에서 사용하는 특수문자들은 99% 반각문자로 사용하고 있다.

 

자세히 보면 생김새도 다르고 전각문자가 반각문자보다 더 좌우로 퍼져있는 형태로 보인다.

하지만 뷰어에 따라서 똑같이 보일 수도 있다.

 

그렇다면 다시 위의 문제로 돌아가서 전각 골뱅이와 반각 골뱅이를 컴퓨터가 다르게 인식하는지 확인해보자.

 

// 왼쪽이 반각, 오른쪽이 전각
console.log('@' == '@');

Chrome에서 F12를 눌러 확인한 결과

정말로 다르게 인식한다.

 

서로 다른 유니코드 결과

반각 골뱅이의 유니코드는 U+0040, 전각 골뱅이의 유니코드는 U+FF20으로 서로 다른 문자로 인식하는 것이 확실해졌다.

 

그렇기 때문에 프로그래머는 다국어 서비스(특히 일본)를 개발할 때 전각문자를 반각문자로 자동 치환해주는 작업을 고려할 필요가 있다.

 

(※ 전각문자로 숫자를 쓰면 대부분의 환경에서 숫자가 아니라 문자열로 인식한다.)

 

▶  참조

▷ 위키피디아 : 

 

전각 문자와 반각 문자 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 전각 문자와 반각 문자를 표시하는 한국어 명령 프롬프트 (cmd.exe). 전각 문자(全角文字)와 반각 문자(半角文字)는 주로 한중일의 인쇄 문화에서 사용하는 용어로, 문자의 폭이 일반적인 영문자의 고정 폭의 두 배 정도의 폭을 가지는 문자를 전각 문자라고 하고 이에 대응하여 전각 문자 폭의 절반을 폭으로 하는 문자를 반각 문자라고 한다. 서양의 인쇄술에서는 엠(em)이란 용어가 전각이란 개념과 다소 유사하다. 주로 한글

ko.wikipedia.org

반응형

댓글